Загрузка...
Загрузка...
Shadow DOM — это технология в браузере, которая позволяет создавать инкапсулированные DOM-деревья внутри элементов.
Она изолирует HTML, CSS и JS, чтобы избежать конфликтов со стилями и скриптами внешней страницы.
Всё, что находится внутри Shadow DOM, недоступно извне напрямую: ни CSS-стили, ни JS-код снаружи не влияют на внутренности компонента.
Стили, написанные в Shadow DOM, не протекают наружу, и наоборот — стили снаружи не влияют на внутреннюю структуру компонента.
Shadow DOM делает Web Components более надёжными и независимыми от внешней среды.
Создаётся через метод .attachShadow():
<div id="my-element"></div>
<script>
const host = document.getElementById("my-element");
const shadow = host.attachShadow({ mode: "open" });
shadow.innerHTML = ``;
</script>
mode: "open" — позволяет получить доступ к shadowRoot снаружи через JS.mode: "closed" — делает shadowRoot полностью приватным.<my-modal>).class MyElement extends HTMLElement {
constructor() {
super();
this.attachShadow({ mode: "open" }).innerHTML = `
<style>p { color: blue; }</style>
<p>Я в тени</p>
`;
}
}
customElements.define('my-element', MyElement);
Теперь в HTML:
<my-element></my-element>
Компонент отрисуется, но его стили не будут конфликтовать с внешними.
Подходит для:
<my-button>, <user-card>)Не обязателен, если:
Вывод:
Shadow DOM — это способ создавать изолированные, безопасные компоненты с собственными стилями и структурой. Он лежит в основе Web Components и используется для достижения инкапсуляции и повторного использования UI.