рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХрд╛ рдкрд░рд┐рдЪрдпред рднрд╛рдЧ 1

рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдореИрдВ рдЖрдкрдХреЗ рд▓рд┐рдП Google рд╕реЗ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд╣реЛрдирд╣рд╛рд░ рдорд╛рдирдХ рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдЕрдЧрд▓реЗ рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдореЗрдВ рдПрдХ рдкреНрд░рд╡реГрддреНрддрд┐ рдмрди рд╕рдХрддреА рд╣реИред рдлрд┐рд▓рд╣рд╛рд▓, рдЗрд╕ рдорд╛рдирдХ рдХрд╛ рдЬреНрдЮрд╛рди рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдирдП рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рд╕рдм рдХреБрдЫ рдХреЗ рдкреНрд░рд╢рдВрд╕рдХ рдирд╣реАрдВ рд╣реИрдВ, рддреЛ рдЖрдк рдЗрд╕ рдЕрдиреБрд╡рд╛рдж рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдКрдм рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдиреБрд╡рд╛рдж рдЧрд┐рдердм рдкрд░ рдкреЛрд╕реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рдорджрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдпрд╛ рддреНрд░реБрдЯрд┐ рдХреЛ рдареАрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдПрдХ рдкреБрд▓ рдЕрдиреБрд░реЛрдз рдХрд░реЗрдВ, рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рд▓рд┐рдЦреЗрдВред

рд╕реНрдерд┐рддрд┐:

рд▓реЗрдЦрдХ:


рдкрд░рд┐рдЪрдп



рд╡реЗрдм рдХреЗ рд▓рд┐рдП рдШрдЯрдХ рдореЙрдбрд▓ (рдпрд╛ рд╡реЗрдм рдШрдЯрдХ) рдореЗрдВ рдЪрд╛рд░ рдореЙрдбреНрдпреВрд▓ рд╣реЛрддреЗ рд╣реИрдВ, рдЬреЛ рдПрдХ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░, рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЛ рд╕рдореГрджреНрдз рджреГрд╢реНрдп рдХреНрд╖рдорддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рдЬреЗрдЯ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛, рд╡рд┐рдХрд╕рд┐рдд рдХрд░рдирд╛ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдЬреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдХреЗрд╡рд▓ рд╕реАрдПрд╕рдПрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрднрд╡ рдирд╣реАрдВ рд╣реИ рдФрд░ рдЬреЗрдПрд╕ рд▓рд╛рдЗрдмреНрд░реЗрд░реАред


рдореЙрдбреНрдпреВрд▓:



рд╕рд╛рде рдореЗрдВ, рд╕рдЬреНрдЬрд╛рдХрд╛рд░ рдФрд░ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдШрдЯрдХ рдХрд╣рд▓рд╛рддреЗ рд╣реИрдВред

рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕



<template> рддрддреНрд╡ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рд╕рд╛рде рдмрд╛рдж рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдорд╛рд░реНрдХрдЕрдк рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, <decorator> рдФрд░ <element> , рдЬреЛ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╣реИрдВ)ред

<template> рддрддреНрд╡ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрд╛рд░реНрд╕ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд╖реНрдХреНрд░рд┐рдп рд╣реИ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдЪрд▓рддреА рд╣реИрдВ, рдЪрд┐рддреНрд░ рд▓реЛрдб рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ, рдЖрджрд┐ <template> рддрддреНрд╡ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ, рдРрд╕реЗ рддрддреНрд╡ рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕рд╛рдордЧреНрд░реА рд╕рдВрдкрддреНрддрд┐ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдПрдХ рд╕реНрдерд┐рд░ рдбреЛрдо рд╕рдВрд░рдЪрдирд╛ рд╣реЛрддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рдПрдХ DOM рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ рдЬреЛ рдХрд┐рд╕реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдХрдИ рдмрд╛рд░ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рдФрд░ рдлрд┐рд░ рдЖрд╡рд╢реНрдпрдХ рд╣реЛрдиреЗ рдкрд░ рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддреЗ рд╣реИрдВред

 <template id="commentTemplate"> <div> <img src=""> <div class="comment"></div> тАж </div> </template> var t = document.querySelector("#commentTemplate"); //     img[src]  . // тАж someElement.appendChild(t.content.cloneNode()); 


рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдПрдХ рд╕реНрдерд┐рд░ рдбреЛрдо рдиреЛрдб рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдпрд╣ "рд▓рд╛рдЗрд╡" рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ DOM рдиреЛрдб рдЖрдВрддрд░рд┐рдХ HTML рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рд╕рдЬреНрдЬрд╛рдХрд╛рд░



рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рдПрдХ рдРрд╕реА рдЪреАрдЬ рд╣реИ рдЬреЛ рдореМрдЬреВрджрд╛ рддрддреНрд╡ рдХреА рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЛ рдмрдврд╝рд╛рддрд╛ рд╣реИ рдпрд╛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрднреНрдпрд╛рд╡реЗрджрди рдХреЗ рд╕рднреА рдкрд╣рд▓реБрдУрдВ рдХреА рддрд░рд╣, рд╕рдЬреНрдЬрд╛рдХрд╛рд░реЛрдВ рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ CSS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдорд╛рд░реНрдХрдЕрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдкрд╣рд▓реБрдУрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╕рдЬреНрдЬрд╛рдХрд╛рд░реЛрдВ рдХреА рдПрдХ рдЕрдиреВрдареА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред

<decorator> рддрддреНрд╡ рдореЗрдВ рдПрдХ <template> рддрддреНрд╡ рд╣реЛрддрд╛ рд╣реИ рдЬреЛ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

 <decorator id="fade-to-white"> <template> <div style="position: relative;"> <style scoped> #fog { position: absolute; left: 0; bottom: 0; right: 0; height: 5em; background: linear-gradient( bottom, white 0, rgba(255, 255, 255, 0) 100); } </style> <content></content> <div id="fog"></div> </div> </template> </decorator> 


<content> рддрддреНрд╡ рдЙрд╕ рд╕реНрдерд╛рди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд╣рд╛рдВ рдбреЗрдХреЛрд░реЗрдЯрд░ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА) рдбрд╛рд▓реА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рд╕реАрдПрд╕рдПрд╕ рдбреЗрдХреЛрд░реЗрдЯрд░ рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 .poem { decorator: url(#fade-to-white); font-variant: small-caps; } 


рдКрдкрд░ рд╡рд░реНрдгрд┐рдд рдбреЗрдХреЛрд░реЗрдЯрд░ рдФрд░ рд╕реАрдПрд╕рдПрд╕ рдЗрд╕ рдорд╛рд░реНрдХрдЕрдк рдХреЛ рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛:

 <div class="poem"> Two roads diverged in a yellow wood,<br> тАж </div> 

+ рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рд░реЗрдВрдбрд░ рдЗрд╕ рдорд╛рд░реНрдХрдЕрдк рдХреА рддрд░рд╣ рд╣реЛрдЧрд╛ (рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдПрдЬреЗрдВрдЯ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╕рдВрдХреНрд╖рд┐рдкреНрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ):

 <div class="poem" style="font-variant: small-caps;"> <div style="position: relative;"> Two roads diverged in a yellow wood,<br> тАж <div style="position: absolute; left: 0; тАж"></div> </div> </div> 

рдпрджрд┐ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ рддреЛ рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛ рдЬрд╣рд╛рдВ рдбреЗрдХреЛрд░реЗрдЯрд░ рдШреЛрд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЕрдм рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИ - рдЖрдорддреМрд░ рдкрд░ рдЬрдм рдбреЗрдХреЛрд░реЗрдЯрд░ рд╕рдВрдкрддреНрддрд┐ рдХреЗ рд╕рд╛рде рдЪрдпрдирдХрд░реНрддрд╛ рдЕрдм рддрддреНрд╡ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдпрд╛ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд╕рд╛рде рдирд┐рдпрдо рдХреЛ рд╢реИрд▓реА рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдмрджрд▓ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддрддреНрд╡ рд╡рд╛рдкрд╕ рдХрд░ рджреЗрддрд╛ рд╣реИред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реНрдерд┐рддрд┐ ..

рднрд▓реЗ рд╣реА CSS рдбреЗрдХреЛрд░реЗрдЯрд░ рд╕рдВрдкрддреНрддрд┐ рдиреЗрдЯрд╡рд░реНрдХ рдкрд░ рдХрд┐рд╕реА рднреА рд╕рдВрд╕рд╛рдзрди рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░ рд╕рдХрддреА рд╣реИ, рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЬрдмрдХрд┐ рдЗрд╕рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЛ рд╡рд░реНрддрдорд╛рди рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред

рдорд╛рд░реНрдХрдЕрдк рдЬреЛ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдЙрддреНрдкрдиреНрди рд╣реЛрддрд╛ рд╣реИ, рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рдкреНрд░рд╕реНрддреБрддрд┐ рдЙрдкрдпреЛрдЧ рддрдХ рд╕реАрдорд┐рдд рд╣реИ: рдпрд╣ рдХрднреА рднреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддрд╛ (рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд╕рд╣рд┐рдд), рдФрд░ рдЗрд╕реЗ рд╕рдВрдкрд╛рджрд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдбреЗрдХреЛрд░реЗрдЯрд░ рдЗрд╡реЗрдВрдЯреНрд╕



рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рд╢реАрд▓рддрд╛ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдХреЛрд░реЗрдЯрд░ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рднреА рд╕рдВрд▓рдЧреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЪреВрдБрдХрд┐ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреНрд╖рдгрд┐рдХ рд╣реЛрддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдИрд╡реЗрдВрдЯ рдХреЗ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХрд┐рд╕реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдиреЛрдбреНрд╕ рдкрд░ рдЯрд╛рдВрдЧрдирд╛ рдпрд╛ рдХрд┐рд╕реА рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рдХрд┐рд╕реА рднреА рд╕реНрдерд┐рддрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рд░рд╣рдирд╛ рдХреБрд╢рд▓ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдХрд┐рд╕реА рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдиреЛрдбреНрд╕ рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдПрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдпрд╛ рдХрд┐рд╕реА рддрддреНрд╡ рд╕реЗ рд╣рдЯрд╛рдП рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдбреЗрдХреЛрд░реЗрдЯрд░ рдЗрд╡реЗрдВрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХреЗ рд╕рд╛рде рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рд░рдЬрд┐рд╕реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВред рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХреЛ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдПрдХ <script> рдПрд▓рд┐рдореЗрдВрдЯ рд╢рд╛рдорд┐рд▓ рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рдмрд╛рд░ рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ рдбрд╛рд▓рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╛ рдмрд╛рд╣рд░реА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдВрдЬреАрд░ред рдШрдЯрдирд╛ рд╕рдВрдЪрд╛рд▓рдХреЛрдВ рд░рдЬрд┐рд╕реНрдЯрд░



рдЗрд╕ рдШрдЯрдирд╛ рдХреЗ рдорд╛рди рдХреЗ рд░реВрдк рдореЗрдВ рдШрдЯрдирд╛ рдирд┐рдпрдВрддреНрд░рдХ рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

 <decorator id="decorator-event-demo"> <script> function h(event) { alert(event.target); } this.listen({selector: "#b", type: "click", handler: h}); </script> <template> <content></content> <button id="b">Bar</button> </template> </decorator> 


рд▓рд┐рд╕реНрдиреЗрди рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЬрдм рдмрдЯрди рджрдмрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдИрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдЖрдЧ рд▓рдЧрд╛рдПрдЧрд╛ ред

рдИрд╡реЗрдВрдЯ рдХрдВрдЯреНрд░реЛрд▓рд░ рдХрд┐рд╕реА рднреА рдиреЛрдб рдкрд░ рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдИрд╡реЗрдВрдЯ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░реЗрдЧрд╛, рдЬрд┐рд╕ рдкрд░ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рдЕрдВрдЬреАрд░ред рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдФрд░ рд░реАрдореИрдкрд┐рдВрдЧ



рдЬрдм рдИрд╡реЗрдВрдЯ рд╢реНрд░реЛрддрд╛ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдИрд╡реЗрдВрдЯ рдХрд╛ рд▓рдХреНрд╖реНрдп рдорд╛рди рд╡рд╣ рдиреЛрдб рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рди рдХрд┐ рдЙрд╕рдХреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдКрдкрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдбреЗрдХреЛрд░реЗрдЯрд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рд╛рдордЧреНрд░реА рд╣реИ:

 <span style="decorator: url(#decorator-event-demo);">Foo</span> 

рдЗрд╕рдореЗрдВ рд░реЗрдВрдбрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛:

  рдлреВ [рдмрд╛рд░] 

рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдкрд░ [object HTMLSpanElement] рд╕рд╛рде рдПрдХ рд╕рдВрджреЗрд╢ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдЧрд╛ред

рд▓рдХреНрд╖реНрдп рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЗрдХреЛрд░реЗрдЯрд░ рдореИрдкрд┐рдВрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ; рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреА рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдЬрдм рдбреЗрдХреЛрд░реЗрдЯрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд▓рдХреНрд╖реНрдп рд╕рдВрдкрддреНрддрд┐ рдХреЛ рдЙрд╕ рдиреЛрдб рдкрд░ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдмрджрд▓ рджреЗрддреА рд╣реИ, рддреЛ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдареАрдХ рдЙрд╕реА рддрд░рд╣ рдЬреИрд╕реЗ рдХрд┐ <script> рддрддреНрд╡ рдХрд╛ рдЯреЗрдХреНрд╕реНрдЯрдХрдВрдЯреЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдирд╛ <script> рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЛ рдлрд┐рд░ рд╕реЗ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдкрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдмрджрд▓ рдирд╣реАрдВ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рддрддреНрд╡ рдкрд░ рдЦреБрдж рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ; рд╡рд╣ рдХреЗрд╡рд▓ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЛ рджреВрд╕рд░реЗ рдкрд░ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред

рдбреЗрдХреЛрд░реЗрдЯрд░ рдЙрджрд╛рд╣рд░рдг



рдПрдХ рд╡рд┐рд╕реНрддрд╛рд░рдХ рддрддреНрд╡ рдХрд╛ рдПрдХ рд╕рд░рд▓ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:

 details { decorator: url(#details-closed); } details[open] { decorator: url(#details-open); } 

 <decorator id="details-closed"> <script> this.listen({ selector: "#summary", type: "click", handler: function (event) { event.currentTarget.open = true; } }); </script> <template> <a id="summary"> > <content select="summary:first-of-type"></content> </a> </template> </decorator> <decorator id="details-open"> <script> this.listen({ selector: "#summary", type: "click", handler: function (event) { event.currentTarget.open = false; } }); </script> <template> <a id="summary"> V <content select="summary:first-of-type"></content> </a> <content></content> </template> </decorator> 


рдЗрд╕рдХреЗ рд▓рд┐рдП рджреЛ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреА рдЬрд░реВрд░рдд рдереАред рдПрдХ рдмрдВрдж рд░реВрдк рдореЗрдВ рд╡рд┐рд╕реНрддрд╛рд░ рддрддреНрд╡ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ , рджреВрд╕рд░рд╛ рдЦреБрд▓реЗ рдореЗрдВред рдкреНрд░рддреНрдпреЗрдХ рдбреЗрдХреЛрд░реЗрдЯрд░ рд░рд╛рдЬреНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХреЛ рдЦреЛрд▓рдиреЗ / рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдЙрд╕ рдХреНрд▓рд┐рдХ рдЗрд╡реЗрдВрдЯ рд╣реИрдВрдбрд▓рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред <element> рдХреА рдЪрдпрди рд╡рд┐рд╢реЗрд╖рддрд╛ рдиреАрдЪреЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдЪрд░реНрдЪрд╛ рдХреА рдЬрд╛рдПрдЧреАред

рдХрд╕реНрдЯрдо рдЖрдЗрдЯрдо



рдХрд╕реНрдЯрдо рддрддреНрд╡ рдПрдХ рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ DOM рддрддреНрд╡ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд▓реЗрдЦрдХ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрд╕реНрдЯрдо рддрддреНрд╡ рдбреЗрдХреЛрд░реЗрдЯрд░реНрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрд┐рд╕реЗ рд╡рд╛рдВрдЫрд┐рдд рддрддреНрд╡ рдкрд░ рд▓рд╛рдЧреВ рдпрд╛ рд╣рдЯрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдХрд╛ рдкреНрд░рдХрд╛рд░ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рддрддреНрд╡ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирдП рдкреНрд░рджрд░реНрд╢рди рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЙрддреНрддрд░рд╛рд░реНрджреНрдз рдХреА рдкреНрд░рд╛рдердорд┐рдХ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдХрд╛рд░рдгред

<element> рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИред

 <element extends="button" name="x-fancybutton"> тАж </element> 


рдлреИрд▓реА рд╣реБрдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЙрд╕ рддрддреНрд╡ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдПрдХ рдЯреИрдЧ рд╣реЛрдЧрд╛ рдЬреЛ рд╡рд┐рд╕реНрддрд╛рд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реИред

рдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдЙрд╕ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдХреА рдкрд╣рдЪрд╛рди рдХрд░рддреА рд╣реИ рдЬреЛ рдЗрд╕ рдорд╛рд░реНрдХрдЕрдк рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реЛрдЧрд╛ред рдирд╛рдо рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдирд╛рдо рд╕реНрдерд╛рди рдорд╛рдирдХ рддрддреНрд╡реЛрдВ рдХреЗ рдЯреИрдЧ рдирд╛рдореЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИ, рдЗрд╕рд▓рд┐рдП, рдЯрдХрд░рд╛рд╡ рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, x- рдЙрдкрд╕рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрд▓рдЧ-рдЕрд▓рдЧ рдмреНрд░рд╛рдЙрдЬрд╝рд░ HTML рддрддреНрд╡реЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрдирдХреА рд╕рднреА рд╡реНрдпрд╛рдЦреНрдпрд╛рдПрдВ HTML рдХреЗ рд╢рдмреНрджрд╛рд░реНрде рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджреЗрд╢рд┐рдд рд╣реЛрддреА рд╣реИрдВред

рдЪреВрдВрдХрд┐ рд╕рднреА рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рддрддреНрд╡реЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд▓реЗрдЦрдХреЛрдВ рдХреЛ рдЙрди HTML рддрддреНрд╡реЛрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдирдП рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛-рдкрд░рд┐рднрд╛рд╖рд┐рдд рддрддреНрд╡ рдХрд╛ рдирд┐рдХрдЯрддрдо рдорд╛рди рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдЗрдВрдЯрд░реИрдХреНрдЯрд┐рд╡ рд╣реИ рдФрд░ рдХреБрдЫ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдХреЗ рдХреНрд▓рд┐рдХреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдмрдЯрди ( <button> ) рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрдм рдХреЛрдИ HTML рддрддреНрд╡ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рд╢рдмреНрджрд╛рд░реНрде рд╕реЗ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрд╕рдХреЗ рдХрд░реАрдм рд╣реИ, рддреЛ рд▓реЗрдЦрдХ рдХреЛ рддрдЯрд╕реНрде рддрддреНрд╡, рдЬреИрд╕реЗ рдХрд┐ <span> рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

рд╡рд┐рдЪрд╛рд░



рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдореЗрдВ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

 <element extends="button" name="x-fancybutton"> <template> <style scoped> ::bound-element { display: transparent; } div.fancy { тАж } </style> <div class="fancy"> <content></content> <div id="t"></div> <div id="l"></div> <div id="b"></div> <div id="r"></div> </div> </template> </element> 


рдпрджрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдореЗрдВ рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣реИ, рддреЛ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рдПрдХ рдкреНрд░рддрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдбрд┐рдЬрд╛рдЗрдирд░ рджреНрд╡рд╛рд░рд╛ рддрддреНрд╡ рдХреА рдЫрд╛рдпрд╛ DOM рдореЗрдВ рдбрд╛рд▓реА рдЬрд╛рдПрдЧреАред

рдЫрд╛рдпрд╛ рдбреЛрдо рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



рдХреНрдпреЛрдВрдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдореМрдЬреВрджрд╛ HTML рдЯреИрдЧ (div, рдмрдЯрди, рд╡рд┐рдХрд▓реНрдк, рдЖрджрд┐) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдХрд┐ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХрд╛ рдорд╛рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдХрд╛ рдирд╛рдо рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

 <element extends="button" name="x-fancybutton"> <!-- definition --> тАж </element> <button is="x-fancybutton" onclick="showTimeClicked(event);"> <!-- use --> Show time </button> 


рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛



рдЖрдк рдорд╛рдирдХ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдзрд┐:

 var b = document.createElement("x-fancybutton"); alert(b.outerHTML); // will display '<button is="x-fancybutton"></button>' 


рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП <element> рдкрд░ рдирд┐рд░реНрдорд╛рддрд╛ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдЗрд╕ рдирд┐рд░реНрдорд╛рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:

 <element extends="button" name="x-fancybutton" constructor="FancyButton"> тАж </element> 

...
 var b = new FancyButton(); document.body.appendChild(b); </code></pre> 


рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ <script> рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк <script> рддрддреНрд╡ рдХреЗ рдЕрдВрджрд░ <script> рддрддреНрд╡ рдореЗрдВ, рдЕрдкрдиреЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдХрд░ рдПрдкреАрдЖрдИ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рдШреЛрд╖рдгрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

 <element extends="button" name="x-fancybutton" constructor="FancyButton"> тАж <script> FancyButton.prototype.razzle = function () { тАж }; FancyButton.prototype.dazzle = function () { тАж }; </script> </element> тАж <script> var b = new FancyButton(); b.textContent = "Show time"; document.body.appendChild(b); b.addEventListener("click", function (event) { event.target.dazzle(); }); b.razzle(); </script> 


рд╕рд░рд▓ рдЧрд┐рд░рд╛рд╡рдЯ рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ <script> рддрддреНрд╡ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдореВрд▓ рддрддреНрд╡ рдХреЛ HTMLElementElement рдЯрд╛рдЗрдк рдХрд░рддрд╛ рд╣реИ:

 <element extends="table" name="x-chart" constructor="Chart"> <script> if (this === window) // Use polyfills to emulate custom elements. // тАж else { // тАж } </script> </element> 


рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ <script> рддрддреНрд╡ <script> рддрддреНрд╡ рдХреЗ рдЕрдВрджрд░, рдЬрдм рдЗрд╕реЗ <element> рдпрд╛ <decorator> рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдЗрд╕ рдХреЙрд▓ рдХреЛ рдкрд╣рдЪрд╛рди рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:

 (function() { // code goes here. }).call(parentInstance); 


рдЙрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдЬрд╣рд╛рдВ рд╡рд┐рдВрдбреЛ рдСрдмреНрдЬреЗрдХреНрдЯ рдореЗрдВ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХрд╛ рдирд╛рдо рдЕрдЬреНрдЮрд╛рдд рд╣реИ, рдХрд╕реНрдЯрдо рдШрдЯрдХ рдХрд╛ рд▓реЗрдЦрдХ HTMLElementElement рдХреА рдЙрддреНрдкрдиреНрди рд╕рдВрдкрддреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ:

 <element extends="table" name="x-chart"> <script> // тАж var Chart = this.generatedConstructor; Chart.prototype.shizzle = function() { /* тАж */ }; // тАж </script> </element> 


рдЖрдк рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ DOM рддрддреНрд╡ рдкрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдПрдХ рдХрд╕реНрдЯрдо рддрддреНрд╡ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреЗред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдЪрд▓рд╛рдиреЗ рд╕реЗ рдХреБрдЫ рдирд╣реАрдВ рд╣реЛрдЧрд╛:

 var div = document.createElement("div"); div.setAttribute("is", "foo"); alert(div.is); // displays null alert(div.outerHTML); // displays <div></div> 


рдЖрдЗрдЯрдо рдЕрджреНрдпрддрди



рдЬрдм рдПрдХ рдХрд╕реНрдЯрдо рдЖрдЗрдЯрдо рдШреЛрд╖рдгрд╛ рднрд░реА рдЬрд╛рддреА рд╣реИ, рддреЛ рдХрд╕реНрдЯрдо рдЖрдЗрдЯрдо рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рд╕реЗрдЯ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╡рд╛рд▓рд╛ рдкреНрд░рддреНрдпреЗрдХ рдЖрдЗрдЯрдо рдХрд╕реНрдЯрдо рдЖрдЗрдЯрдо рдкрд░ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЕрдкрдбреЗрдЯ рдХрд┐рд╕реА рдЖрдЗрдЯрдо рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рдХрд╕реНрдЯрдо рдЖрдЗрдЯрдо рдХреЗ рд╕рд╛рде рдмрджрд▓рдиреЗ рдХреЗ рд╕рдорд╛рди рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

рдЬрдм рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдЯрд╛рдП рдЧрдП рддрддреНрд╡ рдкрд░ рдПрдХ рдЧреИрд░-рдмреБрджрдмреБрджрд╛рд╣рдЯ, рдЧреИрд░-рд░рджреНрдж рдХрд░рдиреЗ рдпреЛрдЧреНрдп рдШрдЯрдирд╛ рд╣реЛрддреА рд╣реИред рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдмрд╛рдХреА рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдореЗрдВ рджреЗрд░реА рдХрд░рдирд╛ рдЪрд╛рд╣рддреА рд╣реИ рдЬрдм рддрдХ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рд▓реЛрдб рди рд╣реЛ, рдПрдХ рд╡рд┐рд╢реЗрд╖ рдШрдЯрдирд╛ рдХреЗ рд▓рд┐рдП рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ:

 function showTimeClicked(event) { // event.target may be an HTMLButtonElement or a FancyButton if (!event.target.razzle) { // razzle, part of the FancyButton API, is missing // so upgrade has not happened yet event.target.addEventListener('upgrade', function (upgradeEvent) { showTime(upgradeEvent.replacement); }); return; } showTime(event.target); } function showTime(b) { // b is FancyButton } 


рдЬреЛ рд▓реЗрдЦрдХ рдЧреИрд░-рд╢реИрд▓реА рд╡рд╛рд▓реА рд╕рд╛рдордЧреНрд░реА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╡реЗ рдХрд╕реНрдЯрдо-рд▓реЛрдб рд▓реЛрдб рд╣реЛрдиреЗ рддрдХ рдЧреИрд░-рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд, рдирд┐рдпрдорд┐рдд рдЖрдЗрдЯрдо рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП CSS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдЬреАрд╡рди рдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпрд╛рдБ



рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдЪрд╛рд░ рдЬреАрд╡рдирдЪрдХреНрд░ рд╡рд┐рдзрд┐рдпреЛрдВ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддрд╛ рд╣реИ:


рддрддреНрд╡ рдХреА рдУрд░ рдЗрд╢рд╛рд░рд╛ рдХрд░рддреЗ рд╣реБрдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рд╕рдореНрдорд┐рд▓рд┐рдд рдФрд░ рд╣рдЯрд╛рдП рдЧрдП рд╣реИрдВрдбрд▓рд░ рдХреЛ рдХрдИ рдмрд╛рд░ рдХрд╣рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╣рд░ рдмрд╛рд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рддрддреНрд╡ рдбрд╛рд▓рд╛ рдФрд░ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЖрдк HTMLElementElement.lifecycle рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдЗрди рд╣реИрдВрдбрд▓рд░ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ:

 <element extends="time" name="x-clock"> <script> // тАж this.lifecycle({ inserted: function() { this.startUpdatingClock(); }, removed: function() { this.stopUpdatingClock(); } }); // тАж </script> </element> 


рдХрд╕реНрдЯрдо рдЖрдЗрдЯрдо рдПрдХреНрд╕рдЯреЗрдВрд╢рди



HTML рддрддреНрд╡реЛрдВ рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ <element> рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛:

 <element extends="x-clock" name="x-grandfatherclock"> тАж </element> 


рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐



рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп рддреНрд░реБрдЯрд┐рдпреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВ:



рдЕрдиреБрд╡рд╛рджрдХ рд╕реЗ: рдЕрдЧрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рдо рд╡реЗрдм рдШрдЯрдХреЛрдВ рдореЗрдВ рд╢реИрдбреЛ DOM рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рджреЗрдЦреЗрдВрдЧреЗ, рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡реЛрдВ рдФрд░ рд╕рдЬреНрдЬрд╛рдХрд╛рд░реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ, рдФрд░ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рдЕрд▓рдЧрд╛рд╡, рдкреНрд░рддрд┐рдмрдВрдз рдФрд░ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

Source: https://habr.com/ru/post/In152001/


All Articles