рд╢реИрдбреЛ рдбреЛрдо рдХреЗ рдмрд┐рдирд╛ рд╡реЗрдм рдШрдЯрдХ

рд╣реЗрд▓реЛ, рд╣реЗрдмреНрд░!

рд╣рд╛рд▓ рд╣реА рдореЗрдВ, рдореИрдВрдиреЗ рдХрдИ рддрд░рд╣ рдХреЗ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХрд░рддреЗ рд╣реБрдП рдХрдИ рд▓реЗрдЦреЛрдВ рдХреЛ рджреЗрдЦрд╛ред рдХрднреА-рдХрднреА, рдпрд╣ рдЖрд▓реЛрдЪрдирд╛ рдмрд╣реБрдд рдХрдареЛрд░ рд╣реЛрддреА рд╣реИ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдШреГрдгрд╛ рдХреЗ рднрд╛рд╡ рднреАред рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдбреЗрд╡рд▓рдкрд░ рд╕рдореБрджрд╛рдп рдХреЗ рдмреАрдЪ рдорд╛рдирдХреЛрдВ рдХреЗ рдЗрд╕ рд╕рдореВрд╣ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд╕реНрдерд╛рдкрд┐рдд рдЕрднреНрдпрд╛рд╕ рдХреА рдХрдореА рд╣реИред рдХрдИ рдкрд░рд┐рдЪрд┐рдд рдореЙрдбрд▓ рд╣рдореЗрд╢рд╛ рдХрд╕реНрдЯрдо рддрддреНрд╡реЛрдВ рдФрд░ рд╢реИрдбреЛ рдбреЛрдо рд╕реЗ рдЬреБрдбрд╝реА рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рд░реВрдк рд╕реЗ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ , рдХрдИ рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рдирдП рдХреЛрдг рд╕реЗ рджреЗрдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рд╣рд░ рдХреЛрдИ рдЗрд╕реЗ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдХрдИ рд╡рд░реНрд╖реЛрдВ рд╕реЗ рд╡реЗрдм рдШрдЯрдХреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдкрдиреА рдЦреБрдж рдХреА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рднреА рд╡рд┐рдХрд╕рд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВрдЙрдирдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдерд┐рддрд┐ рдмрд╣реБрдд рдЙрдЪрд┐рдд рдирд╣реАрдВ рд╣реИред рдореИрдВ рдХрдо рд╕реЗ рдХрдо рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛, рдЕрдкрдиреА рдорд╛рдореВрд▓реА рддрд╛рдХрдд рдХреА рд╕реАрдорд╛ рддрдХред рдореИрдВрдиреЗ рдХреЙрдореНрдкреИрдХреНрдЯ рдкреНрд░рдХрд╛рд╢рдиреЛрдВ рдХреА рдПрдХ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдмрдирд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдореИрдВ рдЖрд▓реЛрдЪрдирд╛ рдХреЗ рд▓рдЧрд╛рддрд╛рд░ рдкрд╣рд▓реБрдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдЫреВрдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛ рд░рд╣рд╛ рд╣реВрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрдИ рддрдХрдиреАрдХреА рддрдХрдиреАрдХреЛрдВ рдХрд╛ рдкреНрд░рджрд░реНрд╢рди рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдЬреЛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рджрд┐рд▓рдЪрд╕реНрдк рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рдиреНрд╣реЛрдВрдиреЗ рдЕрднреА рддрдХ рдпрд╣ рддрдп рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдХрд┐рд╕ рдкрдХреНрд╖ рдХреЗ рдмреИрд░рд┐рдХреЗрдЯ рдкрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЖрдЬ рдореИрдВ рдЫрд╛рдпрд╛ рдбреЛрдо рдХреЗ рдмрд┐рдирд╛ рдШрдЯрдХреЛрдВ рдХреЛ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред

рдХрд┐рд╕ рд▓рд┐рдП?


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

  • рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХрд╛ рдПрдХ рдЕрд▓рдЧ рдЦрдВрдб рдЬрд┐рд╕рдореЗрдВ рдЖрдкрдХреА рд╢реИрд▓реА рдмрд╛рд╣рд░реА рдкреНрд░рднрд╛рд╡реЛрдВ рдФрд░ "рд▓реАрдХ" рд╕реЗ рд╕реБрд░рдХреНрд╖рд┐рдд рдорд╣рд╕реВрд╕ рдХрд░рддреА рд╣реИ
  • рдПрдХ рд╕рдВрд░рдЪрдирд╛рдЧрдд рддрдВрддреНрд░ рдЬреЛ рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреЛ рдШрдЯрдХ рдХреА рд╕рдВрд░рдЪрдирд╛ рдФрд░ рдЙрд╕рдХреА рд╕рд╛рдордЧреНрд░реА (рдкреЗрдбрд╝ рдореЗрдВ 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 = /*html*/ `
<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>

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


All Articles