рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░!рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ рдХрдИ рддрд░рд╣ рдХреЗ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХрд░рддреЗ рд╣реБрдП рдХрдИ рд▓реЗрдЦреЛрдВ рдХреЛ рджреЗрдЦрд╛ред рдХрднреА-рдХрднреА, рдпрд╣ рдЖрд▓реЛрдЪрдирд╛ рдмрд╣реБрдд рдХрдареЛрд░ рд╣реЛрддреА рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдШреГрдгрд╛ рдХреЗ рднрд╛рд╡ рднреАред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдбреЗрд╡рд▓рдкрд░ рд╕рдореБрджрд╛рдп рдХреЗ рдмреАрдЪ рдорд╛рдирдХреЛрдВ рдХреЗ рдЗрд╕ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдЕрднреНрдпрд╛рд╕ рдХреА рдХрдореА рд╣реИред рдХрдИ рдкрд░рд┐рдЪрд┐рдд рдореЙрдбрд▓ рд╣рдореЗрд╢рд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдФрд░ рд╢реИрдбреЛ рдбреЛрдо рд╕реЗ рдЬреБрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░реВрдк рд╕реЗ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ , рдХрдИ рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рдирдП рдХреЛрдг рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрдиреА рдЦреБрдж рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВрдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдЕрдкрдиреА рдорд╛рдореВрд▓реА рддрд╛рдХрдд рдХреА рд╕реАрдорд╛ рддрдХред рдореИрдВрдиреЗ рдХреЙрдореНрдкреИрдХреНрдЯ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдореИрдВ рдЖрд▓реЛрдЪрдирд╛ рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рдкрд╣рд▓реБрдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЫреВрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрдИ рддрдХрдиреАрдХреА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА рддрдХ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд┐рд╕ рдкрдХреНрд╖ рдХреЗ рдмреИрд░рд┐рдХреЗрдЯ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЬ рдореИрдВ рдЫрд╛рдпрд╛ рдбреЛрдо рдХреЗ рдмрд┐рдирд╛ рдШрдЯрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛редрдХрд┐рд╕ рд▓рд┐рдП?
рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдЬреЛ рдореИрдВ рдЗрд╕ рдмрд╛рд░ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╡реЗрдм рдШрдЯрдХ рдФрд░ рд╢реИрдбреЛ рдбреЛрдо рдПрдХ рд╣реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИрдВ ред рд╢реИрдбреЛ рдбреЛрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдЖрдкрдХреЛ рджреЛ рдореБрдЦреНрдп рд▓рд╛рдн рдорд┐рд▓рддреЗ рд╣реИрдВ:- рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдЦрдВрдб рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреА рд╢реИрд▓реА рдмрд╛рд╣рд░реА рдкреНрд░рднрд╛рд╡реЛрдВ рдФрд░ "рд▓реАрдХ" рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдорд╣рд╕реВрд╕ рдХрд░рддреА рд╣реИ
- рдПрдХ рд╕рдВрд░рдЪрдирд╛рдЧрдд рддрдВрддреНрд░ рдЬреЛ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдШрдЯрдХ рдХреА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЙрд╕рдХреА рд╕рд╛рдордЧреНрд░реА (рдкреЗрдбрд╝ рдореЗрдВ DOM рддрддреНрд╡ рдХреЗ рд╡рдВрд╢рдЬ) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ
рд╣рд╛рд▓рд╛рдВрдХрд┐, рдпрд╣ рдореИрдХреЗрдирд┐рдХ рдПрдХ рдЕрд▓рдЧ рдЬрдЧрд╣ рдмрдирд╛рдиреЗ рдФрд░ рд╕реНрдЯрд╛рдЗрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд▓рд╛рдЧрдд рднреА рд╡рд╣рди рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд╛рдлреА рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИред рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ (рдмрдбрд╝реА рд╕реВрдЪреА, рдбреЗрдЯрд╛ рдХреЗ рд╕рд╛рде рдЯреЗрдмрд▓ рд╕реЗрд▓ рдЖрджрд┐), рдореИрдВ рдкреНрд░рджрд░реНрд╢рди рдЕрдиреБрдХреВрд▓рди рдХреЗ рдХрд╛рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЗрди рд▓рд╛рдЧрддреЛрдВ рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред рдЕрдм рд╣рдо рдЗрд╕реЗ рдареАрдХ рдХрд░реЗрдВрдЧреЗ:const MY_CSS = {
title: 'color: #00f; font-size: 2em',
item: 'color: #f00; font-size: 1.2em',
};
const DATA = [
{text: 'Text 1'},
{text: 'Text 2'},
{text: 'Text 3'},
];
let template = document.createElement('template');
template.innerHTML = `
<div style="${MY_CSS_.title}">List items:</div>
<div class="my-list">
${DATA.map(item => /*html*/ `<div style="${MY_CSS.item}">${item.text}</div>`).join('')}
</div>
`;
class ShadowlessComponent extends HTMLElement {
constructor() {
super();
this._contents = new DocumentFragment();
this._contents.appendChild(template.content.cloneNode(true));
}
connectedCallback() {
this.appendChild(this._contents);
}
}
window.customElements.define('shadowless-component', ShadowlessComponent);
рдпрджрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рдорд╛рдирдХ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рддреБрд░рдВрдд рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИ: attachShadow
рдШрдЯрдХ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп , рд╣рдордиреЗ рдПрдХ рдбреЙрдХреНрдпреВрдореЗрдВрдЯрдлреНрд░реЗрдЧреНрдореЗрдВрдЯ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдП рдЧрдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЛ рдХреНрд▓реЛрди рдХрд┐рдпрд╛ред рдЗрд╕ рд╕реНрддрд░ рдкрд░, рдШрдЯрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдбреЗрдЯрд╛ рдХреЛ рдмрд╛рдБрдз / рдбрд╛рд▓реЗрдВредрдЕрдЧрд▓рд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрджрдо рдХрд╕реНрдЯрдо рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рдЬреАрд╡рди рдЪрдХреНрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИред рдШрдЯрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдФрд░ рдЙрд╕ рдХреНрд╖рдг рддрдХ рд╕рд╛рдорд╛рдиреНрдп рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдореЗрдВ рдШрдЯрдХ рдЬреЛрдбрд╝ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, DOM API рдХрд╛ рд╡рд╣ рднрд╛рдЧ рдЬреЛ рддрддреНрд╡ рдХреЗ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдпрд╛ рд╡рдВрд╢рдЬреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рд╕рд╛рде рд╣реА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рд╕рд╛рде рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдореЗрдВ рд╕реАрдзреЗ рд╕рд╛рдордЧреНрд░реА рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ connectedCallback
редрдЯреЗрдореНрдкрд▓реЗрдЯ рдмрдирд╛рддреЗ рд╕рдордп, рд╣рдордиреЗ рд╕рд░рд▓рддрд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ innerHTML
ред рдпрд╣ рдСрдкрд░реЗрд╢рди рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, "рдЯреЗрдореНрдкрд▓реЗрдЯ" рддрддреНрд╡ рдмрдирд╛рддреЗ рд╕рдордп, рдпрд╣ рд╣рд░ рдмрд╛рд░ рджреЛрд╣рд░рд╛рдпрд╛ рдирд╣реАрдВ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЗрд╕ рдмрд┐рдВрджреБ рдХреЛ рдФрд░ рднреА рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдкреИрдЯрд░реНрди рдмрдирд╛рдХрд░ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИредрдХреБрд▓ рдорд┐рд▓рд╛рдХрд░, рд╣рдорд╛рд░реЗ рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдПрдХ рдХрд╕реНрдЯрдо рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ shadowless-component
, рд╣рдореЗрдВ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓рддреЗ рд╣реИрдВ:<shadowless-component>
<div id="caption" style="color: #00f; font-size: 2em">List items:</div>
<div class="my-list">
<div style="color: #f00; font-size: 1.2em">Text 1</div>
<div style="color: #f00; font-size: 1.2em">Text 2</div>
<div style="color: #f00; font-size: 1.2em">Text 3</div>
</div>
</shadowless-component>
рдЪреВрдВрдХрд┐, ShadowRoot рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдордиреЗ рд╢реИрд▓рд┐рдпреЛрдВ рдХрд╛ рдЕрд▓рдЧрд╛рд╡ рдЦреЛ рджрд┐рдпрд╛, рд╣рдордиреЗ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдЕрдкрдиреЗ рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рд╢реИрд▓рд┐рдпреЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЙрдирдХреА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╣реИ, рдпрд╣ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреНрдп рд╕рднреА рдорд╛рдорд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реНрдЯрд╛рдЗрд▓ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реНрдЯрд╛рдЗрд▓ рд╢реАрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИ, рдФрд░ рдХрд╕реНрдЯрдо рдЯреИрдЧ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЪрдпрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВредрдкреНрд░рджрд░реНрд╢рди: рд╕рд╛рдордЧреНрд░реА
рд╡реЗрдм рдШрдЯрдХ рдЖрдкрдХреЗ DOM рдХрд╛ рдкреВрд░реНрдг рдиреЛрдб рд╣реИрдВред рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ рдбреЛрдо рддрддреНрд╡реЛрдВ рдХреЗ рд╕рднреА рдорд╛рдирдХ рддрд░реАрдХреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВ, рдФрд░ рдпрд╣ рдХрд┐ рдЖрдкрдХрд╛ рдШрдЯрдХ рд╣рдореЗрд╢рд╛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдХрд╛ рдХрдВрдЯреЗрдирд░ рд╣реЛрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, рдпрджрд┐ рдЖрдк рд╡реЗрдм рдШрдЯрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдбреЛрдо рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рдПрдХ рдордирдорд╛рдирд╛ рд╕рдВрд░рдЪрдирд╛ рдЬреЛрдбрд╝рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╡реЗ рд╕рднреА рдЖрдкрдХреЗ рдШрдЯрдХ рдХреЗ рд╡рдВрд╢рдЬ рд╣реЛрдВрдЧреЗ, рдЬреЛ рд╣рдореЗрд╢рд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЖрдк рдирдП CSS рдирд┐рдпрдо - рдкреНрд░рджрд░реНрд╢рди: рд╕рд╛рдордЧреНрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди: caniuse.com/#feat=css-display-contentsрдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рд╕рднреА рдШрдЯрдХреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рд╣реЛрддрд╛ рд╣реИ: рдЗрдирд▓рд╛рдЗрди рд╕рдВрдкрддреНрддрд┐ редрдереЛрдбрд╝реА рд╢рд░рд╛рд░рдд рдХреА
рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдХреЛрдИ рдЕрддрд┐рд░рд┐рдХреНрдд рдХрдВрдЯреЗрдирд░ рдФрд░ рдХрд╕реНрдЯрдо рдЯреИрдЧ рдмрд┐рд▓реНрдХреБрд▓ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╢реБрджреНрдз HTML рджреЗрдВ!рдареАрдХ: constructor() {
super();
this._contents = new DocumentFragment();
this._contents.appendChild(template.content.cloneNode(true));
this._titleEl = this._contents.querySelector('#caption');
window.setInterval(() => {
this._titleEl.textContent = Date.now();
}, 1000);
}
connectedCallback() {
this.parentNode.prepend(this._contents, this);
this.remove();
}
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдпрд╣ рдорд┐рд▓рддрд╛ рд╣реИ:<div id="caption" style="color: #00f; font-size: 2em">1581075598392</div>
<div class="my-list">
<div style="color: #f00; font-size: 1.2em">Text 1</div>
<div style="color: #f00; font-size: 1.2em">Text 2</div>
<div style="color: #f00; font-size: 1.2em">Text 3</div>
</div>
рд╕рднреА рдШрдЯрдирд╛рдПрдВ рдФрд░ рдмрд╛рдЗрдВрдбрд┐рдВрдЧ рдХрд╛рдо рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦрддреА рд╣реИрдВ рдФрд░ рд╣рдорд╛рд░реЗ рдШрдЯрдХ рджреНрд╡рд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рд┐рдд рд╣реЛрддреА рд╣реИрдВ, рдЬреЛ рдЕрдм рдХреЗрд╡рд▓ рд╕реНрдореГрддрд┐ рдореЗрдВ рдореМрдЬреВрдж рд╣реИрдВред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рдЙрд╕ рд╕рдордп рдХрдЪрд░реЗ рд╕реЗ рдЕрдирд╕рдмреНрд╕рдХреНрд░рд╛рдЗрдмрд░реНрд╕ рдФрд░ рдЕрдиреНрдп рд╕рдлрд╛рдИ рдХрд╛ рдЕрддрд┐рд░рд┐рдХреНрдд рдзреНрдпрд╛рди рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдЬрдм рдЖрдк рдШрдЯрдХ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдХрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВредрд╕реАрдПрд╕рдПрд╕ рдШрдЯрдХ
рдорд╛рдирдХ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдХрд╕реНрдЯрдо рдЯреИрдЧ рдХреЛ "-" рд╡рд░реНрдг рдХреЗ рдЕрдирд┐рд╡рд╛рд░реНрдп рдЬреЛрдбрд╝ рдХреЗ рд╕рд╛рде рдирд╛рдорд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдЖрдк рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдЕрдкрдиреЗ рдЯреИрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЙрд╕реА рд╕рдордп JS рдореЗрдВ рдХреЛрдИ рдХрдВрдкреЛрдиреЗрдВрдЯ рдирд╣реАрдВ рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдЙрд╕рдХреЗ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХрдВрдкреЛрдиреЗрдВрдЯ рд░рдЬрд┐рд╕реНрдЯреНрд░реА рдореЗрдВ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЖрдкрдХреЗ рдЯреИрдЧ рдХреЛ "рдЕрдЬреНрдЮрд╛рдд рддрддреНрд╡" ( HTMLUnognElement ) рдорд╛рдирддрд╛ рд╣реИ ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдпреЗ рддрддреНрд╡ рд╕реНрдкреИрди рдЯреИрдЧ рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╕рдорд╛рди рд╣реИрдВред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдпрджрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕рд░рд▓ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕рд░рд▓ рдбрдВрдм рдШрдЯрдХ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕реАрдПрд╕рдПрд╕ рдирд┐рдпрдо :: рдкрд╣рд▓реЗ , :: рдмрд╛рдж рдФрд░ рдПрдЯрд░ () рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдВ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИрдВ ред рдЙрджрд╛рд╣рд░рдг: my-container {
display: block;
padding: 10px;
border: 1px solid currentColor;
}
my-container::before {
content: attr(caption);
margin-bottom: .6em;
}
рдорд╛рд░реНрдХрдЕрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ:<my-container caption=""></my-container>