Sobes.tech
Middle
109
questionbank

Что такое Shadow DOM?

Ответ от нейросети

sobes.tech AI

Shadow DOM — это веб-стандарт, позволяющий инкапсулировать DOM-дерево и стили внутри компонента, изолируя их от остальной части документа.

Основные концепции:

  • Shadow tree: Собственное DOM-дерево, прикрепленное к элементу.
  • Shadow boundary: Граница, отделяющая Shadow DOM от основного документа.
  • Shadow host: Элемент, к которому прикреплен Shadow DOM.
  • Shadow root: Корневой узел Shadow tree.

Преимущества:

  • Изоляция стилей: Стили, определенные внутри Shadow DOM, не влияют на элементы вне его, и наоборот.
  • Изоляция DOM: DOM-структура внутри Shadow DOM не видна и не доступна напрямую из основного документа, что предотвращает конфликты id и классов.
  • Инкапсуляция: Создает модульные, многоразовые компоненты.

Создание Shadow DOM:

const hostElement = document.getElementById('my-component');
const shadowRoot = hostElement.attachShadow({ mode: 'open' }); // mode: 'open' - доступен из JavaScript; 'closed' - нет

shadowRoot.innerHTML = `
  <style>
    /* Стили только для этого Shadow DOM */
    p {
      color: blue;
    }
  </style>
  <p>Это контент Shadow DOM</p>
`;