рдорд╛рдирдХ рдХрд╛ рд╕рдВрджрд░реНрдн:
www.w3.org/TR/2013/WD-shadow-dom-20130514рддреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЫрд╛рдпрд╛ рдбреЛрдо рдХреНрдпрд╛ рд╣реИ:
рд╢реИрдбреЛ DOM (рдпрд╛ рдХрд┐рд╕реА рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдХрд╛ рд╢реИрдбреЛ рдореЙрдбрд▓) - рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдЬреЛ DOM рдЯреНрд░реА рдореЗрдВ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред рдпрд╣ (рдЫрд╛рдпрд╛ рдореЙрдбрд▓) рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ рдФрд░ рд╕реАрдзреЗ рдкреГрд╖реНрда рдХреЗ рдЕрдВрджрд░ рдПрдореНрдмреЗрдбреЗрдб рд╣реИред
рдЫрд╛рдпрд╛ рдбреЛрдо рдХреА рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛ рд╕рд░рд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдХреНрд░реЛрдо рдореЗрдВ, рдЖрдк рд╡реЗрдм рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ (рд╕реЗрдЯрд┐рдВрдЧреНрд╕ - рд╕рд╛рдорд╛рдиреНрдп - рдЫрд╛рдпрд╛ рдбреЛрдо рджрд┐рдЦрд╛рдПрдВ) рдореЗрдВ рдбрд┐рд╕реНрдкреНрд▓реЗ рдХреЛ рд╕рдХреНрд╖рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдорд╛рдирдХ рдореЗрдВ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рд┐рдд рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЫрд╛рдпрд╛ рдбреЛрдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдПрдореНрдмреЗрдбреЗрдб рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХрдИ рд╣рд┐рд╕реНрд╕реЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ рдЬреЛ рдПрдХ-рджреВрд╕рд░реЗ рд╕реЗ "рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ (рдЕрдзрд┐рдХ рдпрд╛ рдХрдо рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ) рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдбрд┐рдЬрд╛рдЗрди рдХрд░рддреЗ рд╕рдордп, рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЯреНрд░реА рдореЗрдВ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛ рддрд╛рдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХреЗ "рд╕реНрд╡рддрдВрддреНрд░" рдЯреБрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдПрдиреНрдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдПрдХ рдирдпрд╛ рдЕрдореВрд░реНрдд рдкреЗрд╢ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ - рдЫрд╛рдпрд╛ рдбреЛрдо, рдЬреЛ рдЖрдкрдХреЛ рдПрдХ рд╣реА рдореВрд▓ рдкреЗрдбрд╝ рдХреЗ рднреАрддрд░ рдХрдИ рдбреЛрдо рдкреЗрдбрд╝ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдПрдХ рджрд╕реНрддрд╛рд╡реЗрдЬ рд╡рд┐рдХрд╕рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдЬреЛ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИред
рдЪрд╛рдЗрд▓реНрдб рдЯреНрд░реА рдХреЛ рдкреГрд╖реНрда рдкрд░ рдХрд┐рд╕реА рддрддреНрд╡ рдХреЗ рдЕрдВрджрд░ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИред рдореБрдЦреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдкреЗрдбрд╝ рдФрд░ рдЫрд╛рдпрд╛ рдХреЗ рдмреАрдЪ рдХреА рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд╕реАрдорд╛ рдХреЛ рдЫрд╛рдпрд╛ рд╕реАрдорд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рдХреЛ рд╣реЛрд╕реНрдЯ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ рдХреЛ рд╢реИрдбреЛ рд╣реЛрд╕реНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рд╢реИрдбреЛ рдЯреНрд░реА рдХреЗ рдореВрд▓ рдХреЛ рдХреНрд░рдорд╢рдГ рд╢реИрдбреЛ рд░реВрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдкреНрд░рддрд┐рдкрд╛рджрди рдХреЗ рджреМрд░рд╛рди, рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рдЫрд╛рдпрд╛ рд╣реЛрд╕реНрдЯ (рддрддреНрд╡) рдХреА рд╕рд╛рдордЧреНрд░реА рдХрд╛ рд╕реНрдерд╛рди рд▓реЗрддрд╛ рд╣реИред
рдХреНрд░реЛрдорд┐рдпрдо рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
<div id="shadow-host"></div>
var shadowHost = document.querySelector("#shadow-host"), shadowRoot = shadowHost.webkitCreateShadowRoot();

рд╕рдореНрдорд┐рд▓рди рдЕрдВрдХ
рдЗрдВрд╕рд░реНрд╢рди рдкреЙрдЗрдВрдЯреНрд╕ рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рд╢реИрдбреЛ рд╣реЛрд╕реНрдЯ рдФрд░ рд╢реИрдбреЛ рдЯреНрд░реА рдХреЗ рд╡рдВрд╢рдЬреЛрдВ рдХреА рд░рдЪрдирд╛ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдореНрдорд┐рд▓рди рдмрд┐рдВрджреБ рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рдореЗрдВ рдЫрд╛рдпрд╛ рдореЗрдЬрдмрд╛рди рдХреЗ рд╡рдВрд╢рдЬ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВред рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рдХрд╛ рдкреНрд░рддрд┐рдкрд╛рджрди рдХрд░рддреЗ рд╕рдордп, рд╡рдВрд╢рдЬреЛрдВ рдХреЛ рдЗрд╕ рд╕реНрдерд╛рди рдкрд░ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рд╡рд╣ рддрдВрддреНрд░ рдЬреЛ рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЫрд╛рдпрд╛ рдореЗрдЬрдмрд╛рди рдХреЗ рд╡рдВрд╢рдЬ рдХреЛ рд╕рдореНрдорд┐рд▓рди рдмрд┐рдВрджреБ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд╡рд┐рддрд░рдг рдХрд╣рд▓рд╛рддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
<div id="shadow-host"> <span>Hi shadow DOM!</span> </div>
var shadowHost = document.querySelector("#shadow-host"), shadowRoot = shadowHost.webkitCreateShadowRoot(), content = document.createElement("content"); content.select = "span";

рдЫрджреНрдо рддрддреНрд╡ :: рд╡рд┐рддрд░рд┐рдд ()
:: рд╡рд┐рддрд░рд┐рдд (рдЪрдпрдирдХрд░реНрддрд╛) - рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд░рд┐рд╢реНрддреЗрджрд╛рд░ рдЪрдпрдирдХрд░реНрддрд╛ рд▓реЗрдиреЗ рд╡рд╛рд▓рд╛ рдПрдХ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рдЫрджреНрдо рддрддреНрд╡ред рдпрд╣ рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рдореЗрдВ рд╕рдореНрдорд┐рд▓рди рдмрд┐рдВрджреБ рдФрд░ рд╕рдореНрдорд┐рд▓рди рдмрд┐рдВрджреБ рддрдХ рд▓реЗ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдХреЗрд╡рд▓ рдХреНрд░реЛрдо рдХреИрдирд░реА):
<html> <head> <script> function onLoad() { var shadowHost = document.querySelector("#shadow-host"), shadowRoot = shadowHost.webkitCreateShadowRoot(); shadowRoot.innerHTML = document.querySelector("template").innerHTML; } </script> </head> <body onload="onLoad()"> <div id="shadow-host"> <span>Hi shadow DOM!</span> </div> <template> <style> content::-webkit-distributed(span) { color: red !important; } </style> <content></content> </template> </body> </html>
рдПрдХ рдЫрд╛рдпрд╛ рдореЗрдЬрдмрд╛рди рдореЗрдВ рдХрдИ рдЫрд╛рдпрд╛ рдкреЗрдбрд╝ рд╢рд╛рдорд┐рд▓ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ - рдЙрдиреНрд╣реЗрдВ рдЙрд╕ рдХреНрд░рдо рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдерд╛ред рдкреЗрдбрд╝реЛрдВ рдХреЗ рдЗрд╕ рд╕реЗрдЯ рдХреЛ рд╢реИрдбреЛ рд╕реНрдЯреИрдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреБрд░рд╛рдиреЗ рд╢реИрдбреЛ рдЯреНрд░реА рдХреЛ рдЫрд╛рдпрд╛ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдмрд┐рдВрджреБ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдЫрд╛рдпрд╛ рдЯреНрд░реА рдореЗрдВ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
<html> <head> <script> function onLoad() { var shadowHost = document.querySelector("#shadow-host"), firstShadowRoot = shadowHost.webkitCreateShadowRoot(), secondShadowRoot = shadowHost.webkitCreateShadowRoot(); firstShadowRoot.innerHTML = document.querySelector("#template-1").innerHTML; secondShadowRoot.innerHTML = document.querySelector("#template-2").innerHTML; } </script> </head> <body onload="onLoad()"> <div id="shadow-host"> <span>Hi shadow DOM!</span> </div> <template id="template-1"> <div>root 1</div> </template> <template id="template-2"> <div>root 2</div> <shadow></shadow> </template> </body> </html>
рдкреБрдирдГ рдкреНрд░рдХреНрд╖реЗрдкрдг (рдкреБрдирдГ рдкреНрд░рдХреНрд╖реЗрдкрдг)
рдкреНрд░рддрд┐рдХреНрд╖реЗрдкрдг рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдкрд╣рд▓реЗ рдЫрд╛рдпрд╛ рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рд╕рдореНрдорд┐рд▓рди рдмрд┐рдВрджреБ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реЗ рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рдореЗрдВ рдПрдХ рдЫрд╛рдпрд╛ рд╡рд┐рдХреНрд╖реЗрдк рдмрд┐рдВрджреБ рд╣реЛрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЫрд╛рдпрд╛ рдореЗрдЬрдмрд╛рди рд╕реЗ рд▓реА рдЧрдИ рд╕рд╛рдордЧреНрд░реА рдХреЛ рдкрд╣рд▓реЗ рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рдореЗрдВ рдФрд░ рдлрд┐рд░ рджреВрд╕рд░реЗ рдореЗрдВ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
<html> <head> <script> function onLoad() { var shadowHost = document.querySelector("#shadow-host"), firstShadowRoot = shadowHost.webkitCreateShadowRoot(), secondShadowRoot = shadowHost.webkitCreateShadowRoot(); firstShadowRoot.innerHTML = document.querySelector("#template-1").innerHTML; secondShadowRoot.innerHTML = document.querySelector("#template-2").innerHTML; } </script> </head> <body onload="onLoad()"> <div id="shadow-host"> <span>Hi shadow DOM!</span> </div> <template id="template-1"> <div>root 1</div> <content select="span"></content> </template> <template id="template-2"> <div>root 2</div> <shadow></shadow> </template> </body> </html>
рдЫрджреНрдо рддрддреНрд╡ (рдЫрд╛рдпрд╛ рдбреЛрдо рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ)
рдорд╛рдирдХ рдХреЗ рд▓реЗрдЦрдХ рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рдХрд╛ рд▓реЗрдЦрдХ рдЙрд╕ рдкреЗрдбрд╝ рд╕реЗ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЕрдореВрд░реНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдирд╛рдорд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЫрд╛рдпрд╛ рдкреЗрдбрд╝ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдХреБрдЫ рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ, рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рдХреЗ рд▓реЗрдЦрдХ рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рд╕реЗ рдПрдХ рдпрд╛ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рддрддреНрд╡реЛрдВ рдХреЛ рдПрдХ рд╕рдВрд░рдЪрдирд╛рддреНрдордХ рдЕрдореВрд░реНрдд рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЛ рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ рдЫрд╛рдпрд╛ рддрддреНрд╡реЛрдВ рдХреЗ рдмрд╛рд╣рд░ рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рдЗрд╕рдХреЗ рдЕрдВрджрд░ рдХреЗ рддрддреНрд╡реЛрдВ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рд╕рдордЭрддрд╛ рд╣реВрдВ:
<html> <head> <script> function onLoad() { var shadowHost = document.querySelector("#shadow-host"), shadowRoot = shadowHost.webkitCreateShadowRoot(); shadowRoot.innerHTML = document.querySelector("template").innerHTML; } </script> <style> div::x-thumb { width: 10px; height: 10px; background: black; } </style> </head> <body onload="onLoad()"> <div id="shadow-host"></div> <template> <div pseudo="x-thumb"></div> </template> </body> </html>
рдШрдЯрдирд╛рдУрдВ
рдХреБрдЫ рдШрдЯрдирд╛рдУрдВ рдХреЛ рдЫрд╛рдпрд╛ рд╕реАрдорд╛ рд╕реЗ рдЧреБрдЬрд╛рд░рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдХреБрдЫ рдХреЛ рдирд╣реАрдВред рдЕрдкрд╡рд╛рдж рдЙрддреНрдкрд░рд┐рд╡рд░реНрддрди рдШрдЯрдирд╛рдПрдВ рд╣реИрдВ - рд╡реЗ рдЫрд╛рдпрд╛ рдХреЗ рдкреЗрдбрд╝ рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП рдФрд░, рддрджрдиреБрд╕рд╛рд░, рдЫрд╛рдпрд╛ рд╕реАрдорд╛ рд╕реЗ рдЧреБрдЬрд░рддреА рд╣реИрдВред рдЬрдм рдХреЛрдИ рдШрдЯрдирд╛ рдЫрд╛рдпрд╛ рд╕реАрдорд╛ рд╕реЗ рд╣реЛрдХрд░ рдЧреБрдЬрд╝рд░рддреА рд╣реИ, рддреЛ рдЙрд╕рдХрд╛ рдИрд╡реЗрдВрдЯ.рдЯрд╛рд░реНрдЧ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдмрджрд▓ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рдЙрджрд╛рд╣рд░рдг рд╣реИ:
<html> <head> <script> function onLoad() { var shadowHost = document.querySelector("#shadow-host"), shadowRoot = shadowHost.webkitCreateShadowRoot(); shadowRoot.innerHTML = document.querySelector("template").innerHTML; shadowHost.addEventListener("mouseout", function(e) { console.log("mouse out", e.target); }); } </script> <style> #shadow-host { width: 100px; height: 100px; background: blue; } #outer-element { width: 100%; height: 20px; background: red; } </style> </head> <body onload="onLoad()"> <div id="shadow-host"> <div id="outer-element"></div> </div> <template> <div id="first-inner-element"></div> <div id="second-inner-element"></div> <content></content> <style> #first-inner-element { width: 100px; height: 20px; background: green; position: absolute; top: 140px; } #second-inner-element { width: 100px; height: 20px; background: black; margin-bottom: 40px; } </style> </template> </body> </html>
рдЕрдиреБрдорд╛рдирд┐рдд рддрддреНрд╡ рдХреА рдШрдЯрдирд╛рдПрдВ рдЫрд╛рдпрд╛ рд╣реЛрд╕реНрдЯ рдореЗрдВ рдкреЙрдк рдЕрдк рд╣реЛрддреА рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рд╕реАрдзреЗ рдЫрд╛рдпрд╛ рдореЗрдЬрдмрд╛рди рдХреЗ рдЕрдВрджрд░ рдерд╛ред рдкреНрд░рдердо-рдЖрдВрддрд░рд┐рдХ-рддрддреНрд╡ рдИрд╡реЗрдВрдЯ рдЫрд╛рдпрд╛-рд╣реЛрд╕реНрдЯ рдореЗрдВ рдкреЙрдк-рдЕрдк рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рджреВрд╕рд░реЗ-рдЗрдирд░-рдПрд▓рд┐рдореЗрдВрдЯ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреЛ рдмрд┐рд▓реНрдХреБрд▓ рдЫрд╛рдпрд╛ рд╣реЛрд╕реНрдЯ (рдЗрд╡реЗрдВрдЯ.target рдмрджрд▓ рдЧрдпрд╛ рд╣реИ) рдХреЗ рдмрд╛рд╣рд░ рд╕реНрдерд┐рдд рдФрд░ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рд╢реИрд▓рд┐рдпреЛрдВ
рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рд╢реИрд▓рд┐рдпреЛрдВ рдореЗрдВ рд╣реЗрд░рдлреЗрд░ рдХрд░рдиреЗ рдХреЗ рджреЛ рддрд░реАрдХреЗ рд╣реИрдВ:
shadowRoot.resetStyleInheritance (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд)
рдЫрд╛рдпрд╛ рдкреЗрдбрд╝ рдХреЗ рд▓рд┐рдП рд╕реНрдЯрд╛рдЗрд▓ рд╢реИрд▓реА рд╡рд┐рд░рд╛рд╕рдд (рдмрд╛рд╣рд░ рдХреА рдУрд░ рдЫрд╛рдпрд╛ рдкреЗрдбрд╝ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ)ред
shadowRoot.applyAuthorStyles (рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЧрд▓рдд)
рд▓реЗрдЦрдХ рдХреА рд╢реИрд▓рд┐рдпреЛрдВ (рдореБрдЦреНрдп) рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
<html> <head> <script> function onLoad() { var shadowHost = document.querySelector("#shadow-host"), firstShadowRoot = shadowHost.webkitCreateShadowRoot(); var secondShadowRoot = shadowHost.webkitCreateShadowRoot(); secondShadowRoot.resetStyleInheritance = true; secondShadowRoot.applyAuthorStyles = true; firstShadowRoot.innerHTML = document.querySelector("#template-1").innerHTML; secondShadowRoot.innerHTML = document.querySelector("#template-2").innerHTML; } </script> <style> * { font-style: italic; } </style> </head> <body onload="onLoad()"> <div id="shadow-host"></div> <template id="template-1"> <style> * { color: red; font-weight: bold; } </style> <div>root 1</div> </template> <template id="template-2"> <div>root 2</div> <shadow></shadow> </template> </body> </html>
рдкрд░рд┐рдгрд╛рдо
рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ html рдХреЗ рд▓рд┐рдП рдХреБрдЫ "рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди" рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рдерд╛ред рдпрд╣ рдкреГрд╖реНрда рдкрд░ рд╡рд┐рднрд┐рдиреНрди рдкреВрд░реНрд╡-рддреИрдпрд╛рд░ рд╡рд┐рдЧреЗрдЯреНрд╕ рдмрдирд╛рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рдорд╣рд╛рди рдЕрд╡рд╕рд░ рдЦреЛрд▓рддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдЖрд╢реНрдЪрд░реНрдп рд╡рд┐рдЧреЗрдЯреНрд╕ рдХреЗ рдЕрдВрджрд░ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛрдб рдХреЗ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреА рдХрдореА рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдореБрдЭреЗ рдмрд╣реБрдд рддрд╛рд░реНрдХрд┐рдХ рд▓рдЧрддрд╛ рд╣реИред