[рдкрдврд╝рдиреЗ рдХреА рд╕рд▓рд╛рд╣] рдЪрдХреНрд░ рдХреЗ рдЕрдиреНрдп 19 рднрд╛рдЧреЛрдВ рдЖрдЬ, рд╕рдм рдХреБрдЫ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рд╕рд╛рдордЧреНрд░рд┐рдпреЛрдВ рдХреЗ 17 рднрд╛рдЧреЛрдВ рдХреЗ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ, рдЬреЛ рдХрд┐рд╕реА рддрд░рд╣ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд╣рдо рд╡реЗрдм рдШрдЯрдХреЛрдВ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдорд╛рдирдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ рдЬреЛ рдЙрдирдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдЙрджреНрджреЗрд╢реНрдп рд╕реЗ рд╣реИрдВред рд╢реИрдбреЛ рдбреЙрдо рддрдХрдиреАрдХ рдкрд░ рд╡рд┐рд╢реЗрд╖ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рд╕рд┐рдВрд╣рд╛рд╡рд▓реЛрдХрди
рд╡реЗрдм рдШрдЯрдХ рдПрдкреАрдЖрдИ рдХрд╛ рдПрдХ рдкрд░рд┐рд╡рд╛рд░ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирдП рдбреЛрдо рддрддреНрд╡реЛрдВ рдХреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕реЗ рддрддреНрд╡реЛрдВ рдХреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЛ рдмрд╛рдХреА рдХреЛрдб рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдорд╛рд░реЗ рд╕реНрд╡рдпрдВ рдХреЗ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рд╡реЗрдм рдШрдЯрдХреЛрдВ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдЪрд╛рд░ рдкреНрд░реМрджреНрдпреЛрдЧрд┐рдХрд┐рдпрд╛рдВ рд╣реИрдВ:
- рд╢реИрдбреЛ рдбреЛрдо (рд╢реИрдбреЛ рдбреЛрдо)
- HTML рдЯреЗрдореНрдкрд▓реЗрдЯ (HTML рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕)
- рдХрд╕реНрдЯрдо рддрддреНрд╡
- HTML рдЖрдпрд╛рдд (HTML рдЖрдпрд╛рдд)
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд╢реИрдбреЛ рдбреЛрдо рддрдХрдиреАрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕реЗ рдШрдЯрдХ-рдЖрдзрд╛рд░рд┐рдд рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдпрд╣ рдЖрдо рд╡реЗрдм рд╡рд┐рдХрд╛рд╕ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рдореМрдЬреВрдж рд╣реИрдВ:
- DOM рдЖрдЗрд╕реЛрд▓реЗрд╢рди: рдХрдВрдкреЛрдиреЗрдВрдЯ рдореЗрдВ рдПрдХ рдкреГрдердХ DOM рдЯреНрд░реА рд╣реЛрддрд╛ рд╣реИ (рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐
document.querySelector()
рдХрдорд╛рдВрдб рдШрдЯрдХ рдХреЗ рд╢реИрдбреЛ DOM рдореЗрдВ рдиреЛрдб рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрдЧрд╛)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рд╡реЗрдм рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рд╕рд░рд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдбреЛрдо рдШрдЯрдХ рдЕрд▓рдЧ-рдерд▓рдЧ рд╣реИрдВ, рдЬреЛ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕рдВрднрд╛рд╡рд┐рдд рдирд╛рдо рд╕рдВрдШрд░реНрд╖реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд┐рдП рдмрд┐рдирд╛ рдПрдХ рд╣реА рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдирд╛рдореЛрдВ рдореЗрдВ рд╡рд░реНрдЧ рдирд╛рдореЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред - рд╕реАрдПрд╕рдПрд╕ рдЕрд▓рдЧрд╛рд╡: рдЫрд╛рдпрд╛ рдбреЛрдо рдХреЗ рдЕрдВрджрд░ рд╡рд░реНрдгрд┐рдд рд╕реАрдПрд╕рдПрд╕ рдирд┐рдпрдо рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реАрдорд┐рдд рд╣реИрдВред рдпреЗ рд╢реИрд▓рд┐рдпрд╛рдБ рддрддреНрд╡ рдирд╣реАрдВ рдЫреЛрдбрд╝рддреА рд╣реИрдВ, рд╡реЗ рдЕрдиреНрдп рдкреГрд╖реНрда рд╢реИрд▓рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдорд┐рд▓рддреА рд╣реИрдВред
- рд░рдЪрдирд╛: рдорд╛рд░реНрдХрдЕрдк-рдЖрдзрд╛рд░рд┐рдд рдШрдЯрдХреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдШреЛрд╖рдгрд╛рддреНрдордХ рдПрдкреАрдЖрдИ рдХрд╛ рд╡рд┐рдХрд╛рд╕ рдХрд░рдирд╛ред
рд╢реИрдбреЛ рдбреЛрдо рдЯреЗрдХреНрдиреЛрд▓реЙрдЬреА
рдпрд╣ рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА DOM рдФрд░ рд╕рдВрдмрдВрдзрд┐рдд API рдХреА рдЕрд╡рдзрд╛рд░рдгрд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВред рдпрджрд┐ рдирд╣реАрдВ - рдЖрдк рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ
рдЗрд╕ рд╕рд╛рдорд╛рдиред
рд╢реИрдбреЛ рдбреЛрдо рдореВрд▓ рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рдпрдорд┐рдд DOM рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рджреЛ рдЕрдВрддрд░реЛрдВ рдХреЗ рд╕рд╛рде:
- рдкрд╣рд▓рд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╢реИрдбреЛ рдбреЛрдо рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдФрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдпрд╣ рд╢реЗрд╖ рдкреЗрдЬ рдкрд░ рд╢реИрдбреЛ рдбреЛрдо рдХреЗ рд╕рдВрдмрдВрдз рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИред
- рджреВрд╕рд░рд╛ рдкреЗрдЬ рдХреЗ рд╕рдВрдмрдВрдз рдореЗрдВ рд╢реИрдбреЛ рдбреЛрдо рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИред
DOM рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп, DOM рдиреЛрдбреНрд╕ рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬреЛ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ, рдкреЗрдЬ рдХреЗ рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрддреЗ рд╣реИрдВред рд╢реИрдбреЛ рдбреЛрдо рддрдХрдиреАрдХ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдПрдХ рдЕрд▓рдЧ рдбреЛрдо рдЯреНрд░реА рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рддрддреНрд╡ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рдЙрд╕рдХреЗ рд╕рд╛рдорд╛рдиреНрдп рдмрд╛рд▓ рддрддреНрд╡реЛрдВ рд╕реЗ рдЕрд▓рдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕ рдкреГрдердХ рдЙрдк-рдкреНрд░рдХрд╛рд░ рдХреЛ рдЫрд╛рдпрд╛ рд╡реГрдХреНрд╖ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд┐рд╕ рддрддреНрд╡ рд╕реЗ рдРрд╕рд╛ рдкреЗрдбрд╝ рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИ рдЙрд╕реЗ рд╢реИрдбреЛ рд╣реЛрд╕реНрдЯ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рд╕рдм рдХреБрдЫ рдЬреЛ DOM DOM рдХреЗ рд╕рд╛рде рдЫрд╛рдпрд╛ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╡рд╣ рдЙрд╕ рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рд╡рд╣ рд╕рдВрд▓рдЧреНрди рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ
<style>
рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡рд░реНрдгрд┐рдд рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╢реИрдбреЛ рдбреЛрдо рддрдХрдиреАрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реАрдПрд╕рдПрд╕ рдЕрд▓рдЧрд╛рд╡ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рд╢реИрдбреЛ рдбреЛрдо рдмрдирд╛рдирд╛
рдЫрд╛рдпрд╛ рдЬрдбрд╝ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИ рдЬреЛ рдореЗрдЬрдмрд╛рди рддрддреНрд╡ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИред рдПрдХ рддрддреНрд╡ рдПрдХ рдЫрд╛рдпрд╛ DOM рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ рдЬрдм рдПрдХ рдЫрд╛рдпрд╛ рд░реВрдЯ рддрддреНрд╡ рдЗрд╕рдХреЗ рд╕рд╛рде рдЬреБрдбрд╝рд╛ рд╣реЛрддрд╛ рд╣реИред рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рд╢реИрдбреЛ DOM рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдлреЙрд░реНрдо
element.attachShadow()
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
var header = document.createElement('header'); var shadowRoot = header.attachShadow({mode: 'open'}); shadowRoot.appendChild(document.createElement('<p> Shadow DOM </p>');
рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╢реИрдбреЛ рдбреЛрдо
рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдореЗрдВ
рдЙрди рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рдирд╕реЗ DOM рд╢реИрдбреЛ рд╕рдмрдЯреНрд░реАрдЬрд╝ рдХрдиреЗрдХреНрдЯ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рд╢реИрдбреЛ рдбреЛрдо рдореЗрдВ рд░рдЪрдирд╛
рд░рдЪрдирд╛ рд╢реИрдбреЛ рдбреЛрдо рдХреА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдпрд╣ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЬреЛ HTML рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рджреМрд░рд╛рди, рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╡рд┐рднрд┐рдиреНрди рдмрд┐рд▓реНрдбрд┐рдВрдЧ рдмреНрд▓реЙрдХреНрд╕ (рдПрд▓рд┐рдореЗрдВрдЯреНрд╕) рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЬреЛ рдкреЗрдЬ рдмрдирд╛рддреЗ рд╣реИрдВ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ-рджреВрд╕рд░реЗ рдореЗрдВ рдШреЛрдВрд╕рд▓рд╛ рдмрдирд╛рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпреЗ рдРрд╕реЗ рддрддреНрд╡ рд╣реИрдВ рдЬреИрд╕реЗ
<div>
,
<header>
,
<form>
, рдФрд░ рдЕрдиреНрдп рдЬреЛ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╡реЗ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЬреЛ рдЕрдиреНрдп рддрддреНрд╡реЛрдВ рдХреЗ рд▓рд┐рдП рдХрдВрдЯреЗрдирд░ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред
рд░рдЪрдирд╛ рддрддреНрд╡реЛрдВ рдХреА рдХреНрд╖рдорддрд╛ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреА рд╣реИ, рдЬреИрд╕реЗ рдХрд┐
<select>
,
<form>
,
<video>
, рдЕрдиреНрдп HTML рддрддреНрд╡реЛрдВ рдХреЛ рдмрдЪреНрдЪреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдРрд╕реЗ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рд╡рд┐рд╢реЗрд╖ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП,
<select>
рдПрд▓рд┐рдореЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдРрд╕реА рд╕реВрдЪреА рдХреЗ рддрддреНрд╡реЛрдВ рдХреА рдкреВрд░реНрд╡ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ
<option>
рддрддреНрд╡реЛрдВ рдХреЛ рд░реЗрдВрдбрд░
<option>
рд▓рд┐рдП рд╣реИред
рддрддреНрд╡реЛрдВ рдХреА рд░рдЪрдирд╛ рдореЗрдВ рдкреНрд░рдпреБрдХреНрдд рд╢реИрдбреЛ рдбреЛрдо рдХреА рдХреБрдЫ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рд╣рд▓реНрдХреА рдбреЛрдо
рд▓рд╛рдЗрдЯ рдбреЛрдо рдЖрдкрдХреЗ рдШрдЯрдХ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдорд╛рд░реНрдХрдЕрдк рд╣реИред рдпрд╣ DOM рдХрдВрдкреЛрдиреЗрдВрдЯ рдХреЗ рд╢реИрдбреЛ DOM рдХреЗ рдмрд╛рд╣рд░ рд╣реИ рдФрд░ рдХрдВрдкреЛрдиреЗрдВрдЯ рдХрд╛ рдПрдХ рдмрдЪреНрдЪрд╛ рд╣реИред рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдиреЗ
<better-button>
рдирд╛рдордХ рдПрдХ рдХрд╕реНрдЯрдо рдШрдЯрдХ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдорд╛рдирдХ HTML
<button>
рддрддреНрд╡ рдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЗрд╕ рдирдП рддрддреНрд╡ рдореЗрдВ рдПрдХ рдЫрд╡рд┐ рдФрд░ рдХреБрдЫ рдкрд╛рда рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:
<extended-button> <img align="center" src="boot.png" slot="image"> <span>Launch</span> </extended-button>
<extended-button>
рддрддреНрд╡ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдПрдХ рдХрд╕реНрдЯрдо рдШрдЯрдХ рд╣реИ, рдФрд░ рдЗрд╕ рдШрдЯрдХ рдХреЗ рдЕрдВрджрд░ HTML рдХреЛрдб рдЗрд╕рдХреА рд▓рд╛рдЗрдЯ рдбреЛрдо рд╣реИ - рдЗрд╕ рдШрдЯрдХ рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЗрд╕рдореЗрдВ рдХреНрдпрд╛ рдЬреЛрдбрд╝рд╛ рд╣реИред
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЫрд╛рдпрд╛ DOM
<extended-button>
рдШрдЯрдХ рд╣реИред рдпрд╣ рдПрдХ рдШрдЯрдХ рдХрд╛ рдПрдХ рд╕реНрдерд╛рдиреАрдп рдСрдмреНрдЬреЗрдХреНрдЯ рдореЙрдбрд▓ рд╣реИ рдЬреЛ рд╕реАрдПрд╕рдПрд╕ рдХреА рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рд╕реЗ рдЕрд▓рдЧ, рдЗрд╕рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдШрдЯрдХ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯ рдХрд░рддрд╛ рд╣реИред
рдЪрдкрдЯрд╛ рдбреЛрдо
рдЪрдкрдЯрд╛ рдбреЛрдо рдкреЗрдбрд╝ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрдХреНрд░реАрди рдкрд░ рдШрдЯрдХ рдХреЛ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓рд╛рдЗрдЯ рдбреЛрдо рдФрд░ рд╢реИрдбреЛ рдбреЛрдо рдХреЛ рдорд┐рд▓рд╛рдХрд░ред рдпрд╣ рдРрд╕рд╛ DOM рдЯреНрд░реА рд╣реИ рдЬрд┐рд╕реЗ рдбреЗрд╡рд▓рдкрд░ рдЯреВрд▓реНрд╕ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдпрд╣ рд╡рд╣ рд╣реИ рдЬреЛ рдкреЗрдЬ рдкрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
<extended-button> #shadow-root <style>тАж</style> <slot name="image"> <img align="center" src="boot.png" slot="image"> </slot> <span id="container"> <slot> <span>Launch</span> </slot> </span> </extended-button>
рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕
рдпрджрд┐ рдЖрдкрдХреЛ рд▓рдЧрд╛рддрд╛рд░ рд╡реЗрдм рдкреЗрдЬреЛрдВ рдХреЗ HTML рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рд╕рдорд╛рди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдмрд╛рд░-рдмрд╛рд░ рдПрдХ рд╣реА рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдЗрд╕ рддрд░рд╣ рд╕реЗ рдкрд╣рд▓реЗ рд╕рдВрднрд╡ рдерд╛, рд▓реЗрдХрд┐рди рдЕрдм рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИ рдПрдЪрдЯреАрдПрдордПрд▓ рдЯреИрдЧ рдХреЗ рдЙрджреНрднрд╡ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж
<template>
, рдЬреЛ рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рд╕рдорд░реНрдерди рдкреНрд░рд╛рдкреНрдд рд╣реИред рдпрд╣ рддрддреНрд╡ рдФрд░ рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА DOM рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХреА рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрдк рдЗрд╕реЗ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реЗ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
<template id="my-paragraph"> <p> Paragraph content. </p> </template>
рдпрджрд┐ рдЖрдк рдЗрд╕ рдбрд┐рдЬрд╝рд╛рдЗрди рдХреЛ рдкреГрд╖реНрда рдХреЗ HTML рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд
<p>
рдЯреИрдЧ рдХреА рд╕рд╛рдордЧреНрд░реА рд╕реНрдХреНрд░реАрди рдкрд░ рддрдм рддрдХ рджрд┐рдЦрд╛рдИ рдирд╣реАрдВ рджреЗрдЧреА, рдЬрдм рддрдХ рдХрд┐ рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЗ DOM рд╕реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЬреБрдбрд╝реА рди рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:
var template = document.getElementById('my-paragraph'); var templateContent = template.content; document.body.appendChild(templateContent);
рд╕рдорд╛рди рдкреНрд░рднрд╛рд╡ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдиреНрдп рд╕рд╛рдзрди рд╣реИрдВ, рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЯреЗрдореНрдкрд▓реЗрдЯ рдПрдХ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдорд╛рдирдХ рдЙрдкрдХрд░рдг рд╣реИ рдЬреЛ рдЕрдЪреНрдЫреЗ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рдХрд╛ рдЖрдирдВрдж рд▓реЗрддрд╛ рд╣реИред
рдЖрдзреБрдирд┐рдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП HTML рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдердирдЯреЗрдореНрдкрд▓реЗрдЯ рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЙрдирдХреА рдХреНрд╖рдорддрд╛рдУрдВ рдХрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЦреБрд▓рд╛рд╕рд╛ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдХрд╕реНрдЯрдо рддрддреНрд╡ рдПрдХ рдЕрд▓рдЧ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд╖рдп рд╣реИ, рдФрд░ рдЕрдм, рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐
customElement
рдмреНрд░рд╛рдЙрдЬрд╝рд░
customElement
рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ HTML рдЯреИрдЧ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдФрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрди рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдмрдирд╛рдП рдЧрдП рддрддреНрд╡ рд╕реНрдХреНрд░реАрди рдкрд░ рдХреИрд╕реЗ рджрд┐рдЦреЗрдВрдЧреЗред
рдПрдХ рд╡реЗрдм рдШрдЯрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдЬреЛ рд╣рдорд╛рд░реЗ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреЛ рдЙрд╕рдХреА рдЫрд╛рдпрд╛ DOM рдХреЗ рд▓рд┐рдП рд╕рд╛рдордЧреНрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдирдП рддрддреНрд╡ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ
<my-paragraph>
:
customElements.define('my-paragraph', class extends HTMLElement { constructor() { super(); let template = document.getElementById('my-paragraph'); let templateContent = template.content; const shadowRoot = this.attachShadow({mode: 'open'}).appendChild(templateContent.cloneNode(true)); } });
рдзреНрдпрд╛рди рджреЗрдиреЗ рд╡рд╛рд▓реА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдЫрд╛рдпрд╛ рд░реВрдЯ рдореЗрдВ
Node.cloneNode () рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрдирд╛рдИ рдЧрдИ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдПрдХ рдХреНрд▓реЛрди рд╕рдВрд▓рдЧреНрди рдХрд┐рдпрд╛ рд╣реИред
рдЪреВрдВрдХрд┐ рд╣рдо рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╢реИрдбреЛ рдбреЛрдо рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо
<рд╕реНрдЯрд╛рдЗрд▓> рдПрд▓реАрдореЗрдВрдЯ рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдХреБрдЫ рд╕реНрдЯрд╛рдЗрд▓рд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ рддрдм рдпреВрдЬрд░ рдПрд▓рд┐рдореЗрдВрдЯ рдореЗрдВ рдЗрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдкреВрд░реА рдпреЛрдЬрдирд╛ рдЕрдкреЗрдХреНрд╖рд╛ рдХреЗ рдЕрдиреБрд░реВрдк рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧреА рдпрджрд┐ рдЖрдк рд╢реИрдбреЛ рдбреЛрдо рдХреЗ рдмрдЬрд╛рдп рдирд┐рдпрдорд┐рдд DOM рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╢реИрд▓реА рдХреА рдЬрд╛рдирдХрд╛рд░реА рд╢рд╛рдорд┐рд▓ рдХрд░рдХреЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
<template id="my-paragraph"> <style> p { color: white; background-color: #666; padding: 5px; } </style> <p>Paragraph content. </p> </template>
рдЕрдм рд╣рдорд╛рд░реЗ рджреНрд╡рд╛рд░рд╛ рд╡рд░реНрдгрд┐рдд рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рддрддреНрд╡ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд╡реЗрдм рдкреГрд╖реНрдареЛрдВ рдкрд░ рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
<my-paragraph></my-paragraph>
рд╕реНрд▓реЙрдЯреНрд╕
HTML рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдореЗрдВ рдХрдИ рдХрдорд┐рдпрд╛рдВ рд╣реЛрддреА рд╣реИрдВ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдореЗрдВ рдореБрдЦреНрдп рд╕реНрдЯреИрдЯрд┐рдХ рдорд╛рд░реНрдХрдЕрдк рд╣реЛрддрд╛ рд╣реИ, рдЬреЛ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреБрдЫ рд╡реИрд░рд┐рдПрдмрд▓ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рдЙрдирдХреА рдорджрдж рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд┐рд╕ рддрд░рд╣ рд╕реЗ рд╡реЗ рдорд╛рдирдХ HTML рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ред рдпрд╣ рд╡рд╣ рдЬрдЧрд╣ рд╣реИ рдЬрд╣рд╛рдБ
<slot>
рдЯреИрдЧ рдЖрддрд╛ рд╣реИред
рд╕реНрд▓реЙрдЯреНрд╕ рдХреЛ рдкреНрд▓реЗрд╕рд╣реЛрд▓реНрдбрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ HTML рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ HTML рдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рдиреЗ рдФрд░ рдлрд┐рд░ рдЙрдиреНрд╣реЗрдВ рд╕реНрд▓реЙрдЯреНрд╕ рдЬреЛрдбрд╝рдХрд░ рдЕрдиреБрдХреВрд▓рди рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред
рдЗрд╕ рдмрд╛рдд рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ рдХрд┐ рдЙрдкрд░реЛрдХреНрдд
<slot>
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреИрд╕реЗ рдХрд░реЗрдВрдЧреЗ:
<template id="my-paragraph"> <p> <slot name="my-text">Default text</slot> </p> </template>
рдпрджрд┐ рддрддреНрд╡ рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛрдиреЗ рдкрд░ рд╕реНрд▓реЙрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╛ рдпрджрд┐ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕реНрд▓реЙрдЯреНрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рддреЛ
<my-paragraph>
рддрддреНрд╡ рдореЗрдВ рдХреЗрд╡рд▓
Default text
рдХреА рдорд╛рдирдХ рд╕рд╛рдордЧреНрд░реА рд╢рд╛рдорд┐рд▓ рд╣реЛрдЧреАред
рд╕реНрд▓реЙрдЯ рдХреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
<my-paragraph>
рддрддреНрд╡ рдореЗрдВ
slot
рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╕рд╛рде HTML рдХреЛрдб рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореВрд▓реНрдп рдЙрд╕ рд╕реНрд▓реЙрдЯ рдХреЗ рдирд╛рдо рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рдЗрд╕ рдХреЛрдб рдХреЛ рд░рдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдкрд╣рд▓реЗ рдХреА рддрд░рд╣, рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:
<my-paragraph> <span slot="my-text">Let's have some different text!</span> </my-paragraph>
рдЖрдЗрдЯрдо рд╣реИ рдХрд┐ рд╕реНрд▓реЙрдЯ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ
Slotable рддрддреНрд╡ред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдкрд┐рдЫрд▓реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рдордиреЗ рд╕реНрд▓реЙрдЯ рдореЗрдВ
<span>
рддрддреНрд╡ рдЬреЛрдбрд╝рд╛ рд╣реИ, рдпрд╣ рддрдерд╛рдХрдерд┐рдд рд╕реНрд▓реЙрдЯреЗрдб рддрддреНрд╡ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ
slot
рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдореВрд▓реНрдп
my-text
рдЕрд╕рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ,
my-text
, рд╡рд╣реА рдореВрд▓реНрдп рдЬреЛ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╕реНрд▓реЙрдЯ рдХреЗ
name
рд╡рд┐рд╢реЗрд╖рддрд╛ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдкрд░реЛрдХреНрдд рдорд╛рд░реНрдХрдЕрдк рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдирд┐рдореНрди рдЪрдкрдЯрд╛ рдбреЛрдо рдЯреНрд░реА рдмрдирд╛рдПрдЧрд╛:
<my-paragraph> #shadow-root <p> <slot name="my-text"> <span slot="my-text">Let's have some different text!</span> </slot> </p> </my-paragraph>
рддрддреНрд╡
#shadow-root
ред рдпрд╣ рд╢реИрдбреЛ рдбреЛрдо рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХрд╛ рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИред
stylization
рд╢реИрдбреЛ рдбреЛрдо рддрдХрдиреАрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдШрдЯрдХреЛрдВ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рдЖрдзрд╛рд░ рдкрд░ рд╕реНрдЯрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд╡реЗ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛
рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдШрдЯрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред
In рдШрдЯрдХреЛрдВ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╢реИрд▓рд┐рдпрд╛рдБ
рд╕реАрдПрд╕рдПрд╕ рдЕрд▓рдЧрд╛рд╡ рд╢реИрдбреЛ рдбреЛрдо рддрдХрдиреАрдХ рдХреА рд╕рдмрд╕реЗ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рдЕрд░реНрдерд╛рддреН, рд╣рдо рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ:
- рдкреГрд╖реНрда рдХреЗ рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛ рдЬрд┐рд╕ рдкрд░ рд╕рдВрдмрдВрдзрд┐рдд рдШрдЯрдХ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ рдЗрд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
- рдШрдЯрдХ рдХреЗ рднреАрддрд░ рд╡рд░реНрдгрд┐рдд рд╢реИрд▓рд┐рдпрд╛рдБ рдкреГрд╖реНрда рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рдХрд░рддреА рд╣реИрдВред рд╡реЗ рдореЗрдЬрдмрд╛рди рддрддреНрд╡ рдореЗрдВ рдЕрд▓рдЧ-рдерд▓рдЧ рд╣реИрдВред
рдЫрд╛рдпрд╛ рдбреЛрдо рдХреЗ рдЕрдВрджрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛ рдШрдЯрдХ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рдЕрд▓рдЧ-рдЕрд▓рдЧ рдШрдЯрдХреЛрдВ рдореЗрдВ рд╕рдорд╛рди рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛рдУрдВ рдФрд░ рд╡рд░реНрдЧ рдХреЗ рдирд╛рдореЛрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ рдФрд░ рдирд╛рдо рд╕рдВрдШрд░реНрд╖ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рд╕рд░рд▓ рд╕реАрдПрд╕рдПрд╕ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХрд╛ рдорддрд▓рдм рдЙрди рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреЗ рд▓рд┐рдП рдмреЗрд╣рддрд░ рдкреНрд░рджрд░реНрд╢рди рднреА рд╣реИ рдЬрд┐рдирдореЗрдВ рдЙрдирдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
#shadow-root
рддрддреНрд╡ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдЬреЛ рдХреБрдЫ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ:
#shadow-root <style> #container { background: white; } #container-items { display: inline-flex; } </style> <div id="container"></div> <div id="container-items"></div>
рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рд╢реИрд▓рд┐рдпрд╛рдБ рд╕реНрдерд╛рдиреАрдп
#shadow-root
ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЖрдк
#shadow-root
рдореЗрдВ рдмрд╛рд╣рд░реА рд╕реНрдЯрд╛рдЗрд▓ рд╢реАрдЯ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
<link>
рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдРрд╕реА рд╢реИрд▓рд┐рдпрд╛рдБ рд╕реНрдерд╛рдиреАрдп рднреА рд╣реЛрдВрдЧреАред
тЦНPseudoclass: рдореЗрдЬрдмрд╛рди
:host
рдЫрджреНрдо
:host
рдЖрдкрдХреЛ рдПрдХ рддрддреНрд╡ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдЫрд╛рдпрд╛ DOM рдЯреНрд░реА рдФрд░ рдЗрд╕ рддрддреНрд╡ рдХреА рд╢реИрд▓реА рд╣реИ:
<style> :host { display: block; } </style>
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░
:host
рдЫрджреНрдо
:host
, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рдореВрд▓ рдкреГрд╖реНрда рдХреЗ рдирд┐рдпрдореЛрдВ рдореЗрдВ рдЙрди рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ рдЬреЛ рдЗрд╕ рдЫрджреНрдо рд╡рд░реНрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рддрддреНрд╡ рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╣реИрдВред рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдмрд╛рд╣рд░ рд╕реЗ рдЗрд╕рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрд╕реНрдЯ рдШрдЯрдХ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЫрджреНрдо
:host
рдХреЗрд╡рд▓ рдореВрд▓ рддрддреНрд╡ рдХреА рдЫрд╛рдпрд╛ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЪрд▓рд╛рддрд╛ рд╣реИ, рд╕реЗ рдкрд░реЗ рдПрдХ рдЫрд╛рдпрд╛ рдбреЛрдо рдкреЗрдбрд╝ рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЫрджреНрдо рд╡рд░реНрдЧ рдХрд╛ рдХрд╛рд░реНрдпрд╛рддреНрдордХ рд░реВрдк ::
:host(<selector>)
, рдЖрдкрдХреЛ рд╣реЛрд╕реНрдЯ рддрддреНрд╡ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ
<selector>
рддрддреНрд╡ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╢рд╛рдирджрд╛рд░ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдШрдЯрдХреЛрдВ рдХреЛ рдЙрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдПрдирдХреИрдкреНрд╕реБрд▓реЗрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреА рдХреНрд░рд┐рдпрд╛рдУрдВ рдпрд╛ рдШрдЯрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдореЗрдЬрдмрд╛рди рдШрдЯрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЖрдВрддрд░рд┐рдХ рдиреЛрдбреНрд╕ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
<style> :host { opacity: 0.4; } :host(:hover) { opacity: 1; } :host([disabled]) { background: grey; pointer-events: none; opacity: 0.4; } :host(.pink) > #tabs { color: pink; } </style>
-рдЯрд╛рдЗрдкрд┐рдХреНрд╕ рдФрд░ рдПрдХ рдЫрджреНрдо рд╡рд░реНрдЧ рдХреЗ рд╕рд╛рде рддрддреНрд╡: рдореЗрдЬрдмрд╛рди-рд╕рдВрджрд░реНрдн (<рдЪрдпрдирдХрд░реНрддрд╛>)
:host-context(<selector>)
рдЫрджреНрдо-
:host-context(<selector>)
рдореЗрдЬрдмрд╛рди рддрддреНрд╡ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдпрджрд┐ рдпрд╣ рдпрд╛ рдЗрд╕рдХрд╛ рдХреЛрдИ рдкреВрд░реНрд╡рдЬ рдирд┐рд░реНрджрд┐рд╖реНрдЯ
<selector>
рддрддреНрд╡ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред
рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ рдереАрдо рд╡рд╛рд▓реЗ рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЕрдХреНрд╕рд░ рд╡рд┐рд╖рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ
<html>
рдпрд╛
<body>
рдЯреИрдЧреНрд╕ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдХреНрд▓рд╛рд╕ рдЕрд╕рд╛рдЗрди рдХрд░рдХреЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
<body class="lightheme"> <custom-container> тАж </custom-container> </body>
:host-context(.lightheme)
рдЫрджреНрдо-
:host-context(.lightheme)
<fancy-tabs>
рд▓рд╛рдЧреВ рд╣реЛрдЧрд╛ рдпрджрд┐ рдпрд╣ рддрддреНрд╡
.lightteme
рд╡рдВрд╢рдЬ рд╣реИ:
:host-context(.lightheme) { color: black; background: white; }
:host-context()
рдереАрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП
:host-context()
рдирд┐рд░реНрдорд╛рдг рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП
рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╣реБрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
тЦН рдмрд╛рд╣рд░ рд╕реЗ рдШрдЯрдХ рдХреЗ рдореЗрдЬрдмрд╛рди рддрддреНрд╡ рдХреЛ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдирд╛
рдШрдЯрдХ рдХреЗ рд╣реЛрд╕реНрдЯ рддрддреНрд╡ рдХреЛ рдЪрдпрдирдХрд░реНрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХреЗ рдЯреИрдЧ рдХреЗ рдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдмрд╛рд╣рд░реА рд░реВрдк рд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
custom-container { color: red; }
рдмрд╛рд╣рд░реА рд╢реИрд▓реА рдЫрд╛рдпрд╛ рдбреЛрдо рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╢реИрд▓рд┐рдпреЛрдВ рдкрд░ рдкреВрд░реНрд╡рддрд╛ рд▓реЗрддреА рд╣реИрдВред
рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрдпрдирдХрд░реНрддрд╛ рдмрдирд╛рддрд╛ рд╣реИ:
custom-container { width: 500px; }
рдпрд╣ рдШрдЯрдХ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдирд┐рдпрдо рдХреЛ рд╣реА рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдЧрд╛:
:host { width: 300px; }
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХреЗрд╡рд▓ рдШрдЯрдХ рдХреЛ рд╣реА рд╕реНрдЯрд╛рдЗрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдХрд┐рд╕реА рдШрдЯрдХ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рдХреИрд╕реЗ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░реЗрдВ? рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдг рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕реНрдЯрд╛рдЗрд▓ рд╣реБрдХ рд▓рдЧрд╛рдирд╛
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдШрдЯрдХ рдХреА рдЖрдВрддрд░рд┐рдХ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреА рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рдШрдЯрдХ рдХрд╛ рд▓реЗрдЦрдХ рдЙрдиреНрд╣реЗрдВ
рдХрд╕реНрдЯрдо рд╕реАрдПрд╕рдПрд╕ рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реНрдЯрд╛рдЗрд▓ рд╣реБрдХ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг
<slot>
рдЯреИрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╕рдордп рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддрдВрддреНрд░ рдХреЗ рд╕рдорд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╢реИрд▓рд┐рдпреЛрдВ рдкрд░ рд▓рд╛рдЧреВ рд╣реЛрддрд╛ рд╣реИред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
<style> custom-container { margin-bottom: 60px; - custom-container-bg: black; } </style> <custom-container background>тАж</custom-container>
рдпрд╣рд╛рдБ рдЫрд╛рдпрд╛ рдбреЛрдо рдкреЗрдбрд╝ рдХреЗ рдЕрдВрджрд░ рдХреНрдпрд╛ рд╣реИ:
:host([background]) { background: var( - custom-container-bg, #CECECE); border-radius: 10px; padding: 10px; }
рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдШрдЯрдХ рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рд░рдВрдЧ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд▓реЗ рд░рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдерд╛ рдЬрд┐рд╕рдиреЗ рдЗрд╕реЗ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдерд╛ред рдЕрдиреНрдпрдерд╛, рдкреГрд╖реНрдарднреВрдорд┐ рдХрд╛ рд░рдВрдЧ
#CECECE
рд╣реЛрдЧрд╛ред
рдШрдЯрдХ рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдк рдЕрдкрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВ рдХрд┐ рдХреМрди рд╕реЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реАрдПрд╕рдПрд╕ рдЧреБрдг рд╡реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЕрдкрдиреЗ рдШрдЯрдХ рдХреЗ рдЦреБрд▓реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдЗрд╕ рднрд╛рдЧ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред
рд╕реНрд▓реЙрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдкреАрдЖрдИ
рд╢реИрдбреЛ DOM API рд╕реНрд▓реЙрдЯ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
тЦНEvent рдЦрд╛рдВрдЪрд╛ рдмрджрд▓рдирд╛
рд╕реНрд▓реЙрдЯ рдмрджрд▓рдиреЗ рдХреА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдиреЛрдбреНрд╕ рдХреЛ рд░рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрдм рд╕реНрд▓реЙрдЯ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдХреЛрдИ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд▓рд╛рдЗрдЯ рдбреЛрдо рдореЗрдВ рдЪрд╛рдЗрд▓реНрдб рдиреЛрдб рдЬреЛрдбрд╝рддрд╛ рд╣реИ рдпрд╛ рд╣рдЯрд╛рддрд╛ рд╣реИ:
var slot = this.shadowRoot.querySelector('#some_slot'); slot.addEventListener('slotchange', function(e) { console.log('Light DOM change'); });
рд▓рд╛рдЗрдЯ рдбреЛрдо рдореЗрдВ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рддрддреНрд╡ рдХреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ
MutationObserver
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ
рдпрд╣рд╛рдБ рдФрд░ рдкрдврд╝реЗрдВред
тЦН рд╡рд┐рдзрд┐ рдирд┐рдпрдд рдкрдж ()
рдпрджрд┐ рдЖрдк рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕реНрд▓реЙрдЯ рдХреЗ рд╕рд╛рде рдХреМрди рд╕реЗ рддрддреНрд╡ рдЬреБрдбрд╝реЗ рд╣реИрдВ, рддреЛ
assignedNodes()
рд╡рд┐рдзрд┐ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреА рд╣реИред
slot.assignedNodes()
рдХреЙрд▓ рдХрд░рдирд╛ред
slot.assignedNodes()
рдЧрдпрд╛
slot.assignedNodes()
рд╡рд┐рдзрд┐ рдЖрдкрдХреЛ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ рдХрд┐ рд╕реНрд▓реЙрдЯ рджреНрд╡рд╛рд░рд╛ рдХреМрди рд╕реЗ рддрддреНрд╡ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЧрдП рд╣реИрдВред
{flatten: true}
рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рдЖрдк рд╕реНрд▓реЙрдЯ рдХреА рдорд╛рдирдХ рд╕рд╛рдордЧреНрд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдпрд╣ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдореЗрдВ рдХреЛрдИ рдиреЛрдбреНрд╕ рд╕рдВрд▓рдЧреНрди рдирд╣реАрдВ рдереЗ)ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
<slot name='slot1'><p>Default content</p></slot>
рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд╕реНрд▓реЙрдЯ
<my-container>
рдШрдЯрдХ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИред
рдЖрдЗрдП рдЗрд╕ рдШрдЯрдХ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдпреЛрдЧреЛрдВ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ, рдФрд░ рдЬрдм
assignedNodes()
рд╡рд┐рдзрд┐ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд▓реМрдЯрд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкрд╣рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рд╕реНрд▓реЙрдЯ рдореЗрдВ рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ:
<my-container> <span slot="slot1"> container text </span> </my-container>
рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ,
assignedNodes()
рдХреЙрд▓ рд╡рд╛рдкрд╕ рдЖрдПрдЧрд╛
[ container text ]
ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдорд╛рди рдиреЛрдбреНрд╕ рдХреА рдПрдХ рд╕рд░рдгреА рд╣реИред
рджреВрд╕рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╕реНрд▓реЙрдЯ рдирд╣реАрдВ рднрд░рддреЗ рд╣реИрдВ:
<my-container> </my-container>
assignedNodes()
рдХреЙрд▓ рдПрдХ рдЦрд╛рд▓реА рд╕рд░рдгреА рд▓реМрдЯрд╛рдПрдЧрд╛ -
[]
ред
рдЕрдЧрд░, рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╡рд┐рдзрд┐ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдкрд╛рд╕
{flatten: true}
, рдПрдХ рд╣реА рддрддреНрд╡ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХрд╛ рдлреЛрди рдЗрд╕рдХреА рд╕рд╛рдордЧреНрд░реА рджреЗ рджреЗрдВрдЧреЗ, рдЬрдмрдХрд┐ рдпрд╣ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрддрд╛ рд╣реИ:
[ Default content ]
[ Default content ]
[ Default content ]
ред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╕реНрд▓реЙрдЯ рдХреЗ рдЕрдВрджрд░ рдПрдХ рддрддреНрд╡ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк
assignedNodes()
рдХреЛ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдЖрдкрдХреЛ рдкрддрд╛ рдЪрд▓ рд╕рдХреЗ рдХрд┐ рдЖрдкрдХрд╛ рддрддреНрд╡ рдХрд┐рд╕ рдШрдЯрдХ рд╕реНрд▓реЙрдЯ рдХреЛ рд╕реМрдВрдкрд╛ рдЧрдпрд╛ рд╣реИред
рдЗрд╡реЗрдВрдЯ рдореЙрдбрд▓
рдЖрдЗрдП рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ рдЬрдм рдПрдХ рдШрдЯрдирд╛ рдЬреЛ рдЫрд╛рдпрд╛ рдореЗрдВ рдкреЙрдк рд╣реЛрддреА рд╣реИ DOM рдЯреНрд░реА рдкреЙрдк рдЕрдк рд╣реЛрддреА рд╣реИред рдЗрд╡реЗрдВрдЯ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рд╢реИрдбреЛ DOM рддрдХрдиреАрдХ рджреНрд╡рд╛рд░рд╛ рд╕рдорд░реНрдерд┐рдд рдПрдирдХреИрдкреНрд╕реБрд▓реЗрд╢рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЬрдм рдХрд┐рд╕реА рдШрдЯрдирд╛ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдШрдЯрдХ рд╕реЗ рд╣реА рдЖрддрд╛ рд╣реИ, рди рдХрд┐ рдЗрд╕рдХреЗ рдЖрдВрддрд░рд┐рдХ рддрддреНрд╡ рд╕реЗ, рдЬреЛ рдЫрд╛рдпрд╛ DOM рд╡реГрдХреНрд╖ рдореЗрдВ рд╕реНрдерд┐рдд рд╣реИ рдФрд░ рдЗрд╕ рдШрдЯрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИред
рдпрд╣рд╛рдВ рдЙрди рдШрдЯрдирд╛рдУрдВ рдХреА рдПрдХ рд╕реВрдЪреА рджреА рдЧрдИ рд╣реИ рдЬреЛ рдбреЛрдо рд╢реИрдбреЛ рдЯреНрд░реА рд╕реЗ рдкрд╛рд░рд┐рдд рдХреА рдЬрд╛рддреА рд╣реИрдВ (рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреБрдЫ рдШрдЯрдирд╛рдУрдВ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд╣реАрдВ рд╣реИ):
- рдлреЛрдХрд╕ рдЗрд╡реЗрдВрдЯреНрд╕:
blur
, focus
, focusout
, focusout
ред - рдорд╛рдЙрд╕ рдШрдЯрдирд╛рдПрдБ:
click
, dblclick
, mousedown
, mouseenter
, mousemove
рдФрд░ рдЕрдиреНрдпред - рдкрд╣рд┐рдпрд╛ рдШрдЯрдирд╛рдПрдБ:
wheel
ред - рдЗрдирдкреБрдЯ рдШрдЯрдирд╛рдПрдБ:
beforeinput
, input
ред - рдХреАрдмреЛрд░реНрдб рдЗрд╡реЗрдВрдЯреНрд╕:
keyup
, рдХреА- keyup
ред - рд░рдЪрдирд╛ рдХреА рдШрдЯрдирд╛рдПрдВ:
compositionstart
, compositionupdate
, compositionend
, compositionend
ред - рдбреНрд░реИрдЧ рдЗрд╡реЗрдВрдЯреНрд╕:
dragend
, drag
, dragend
, drop
рдЖрджрд┐ред
рдХрд╕реНрдЯрдо рдИрд╡реЗрдВрдЯ
рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдИрд╡реЗрдВрдЯ DOM рд╢реИрдбреЛ рдЯреНрд░реА рдирд╣реАрдВ рдЫреЛрдбрд╝рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдХрд┐рд╕реА рдИрд╡реЗрдВрдЯ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рд╢реИрдбреЛ DOM рдХреЛ рдЫреЛрдбрд╝ рджреЗ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕реЗ рдкреИрд░рд╛рдореАрдЯрд░
bubbles: true
рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
bubbles: true
рдФрд░
composed: true
ред рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╛рди рдШрдЯрдирд╛ рдХреА рдЪреБрдиреМрддреА рджреА рдЧрдИ рд╣реИ:
var container = this.shadowRoot.querySelector('#container'); container.dispatchEvent(new Event('containerchanged', {bubbles: true, composed: true}));
рд╢реИрдбреЛ рдбреЛрдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдерди
рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╢реИрдбреЛ рдбреЛрдо рддрдХрдиреАрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИ, рдЖрдк
attachShadow
рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреА рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
const supportsShadowDOMV1 = !!HTMLElement.prototype.attachShadow;
рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рд╣реИ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЗрд╕ рддрдХрдиреАрдХ рдХрд╛ рд╕рдорд░реНрдерди рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВред
рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдореЗрдВ рд╢реИрдбреЛ рдбреЛрдо рддрдХрдиреАрдХ рдХрд╛ рд╕рдорд░реНрдердирдкрд░рд┐рдгрд╛рдо
рдЫрд╛рдпрд╛ DOM рдЯреНрд░реА рдирд┐рдпрдорд┐рдд DOM рдЯреНрд░реА рдХреА рддрд░рд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рдЗрд╕ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓реЗрдЦрдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░,
SessionStack рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдореЗрдВ рдпрд╣ DOM рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдкрд░ рдирдЬрд╝рд░ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛ рдкреГрд╖реНрда рдХреЗ рд╕рд╛рде рд╣реБрдИ рдереА, рдЙрд╕реЗ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИред рдЕрд░реНрдерд╛рддреН,
MutationObserver
рдЙрдкрдпреЛрдЧ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЫрд╛рдпрд╛ рдбреЛрдо рдкреЗрдбрд╝ рдирд╣реАрдВ рдХреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ
MutationObserver
рд╡реИрд╢реНрд╡рд┐рдХ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреА рдЬрд░реВрд░рдд рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рдгреА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдШрдЯрдХ рд╣реИ рдХрд┐ рдЫрд╛рдпрд╛ рдбреЛрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд▓рд┐рдП,ред
рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЕрдзрд┐рдХ рд╕реЗ рдЕрдзрд┐рдХ рдЖрдзреБрдирд┐рдХ рд╡реЗрдм рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд╢реИрдбреЛ рдбреЛрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрдХрдиреАрдХ рдХреЗ рдФрд░ рд╡рд┐рдХрд╕рд┐рдд рд╣реЛрдиреЗ рдФрд░ рд╡рд┐рддрд░рд┐рдд рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИредрдкреНрд░рд┐рдп рдкрд╛рдардХреЛрдВ! рдХреНрдпрд╛ рдЖрдк рд╢реИрдбреЛ рдбреЛрдо рддрдХрдиреАрдХ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ?