Shadow DOM — это технология, являющаяся частью спецификации Web Components, которая позволяет создавать инкапсулированную, то есть изолированную структуру DOM внутри веб-компонента. Это своего рода «теневой» DOM, который скрыт от основного документа и не влияет на него, и наоборот. Shadow DOM помогает создавать модульные, безопасные и повторно используемые пользовательские интерфейсные элементы.
В обычном HTML-документе все элементы входят в одно общее дерево DOM, и стили или JavaScript-обработчики событий могут повлиять на любой его участок. Однако когда используется Shadow DOM, компонент получает собственное DOM-дерево, отдельное от основного, со своими стилями и логикой, которые не затрагивают остальной интерфейс.
Shadow DOM гарантирует, что внутренняя структура и стили компонента не будут случайно переопределены или нарушены внешним кодом. Это делает компоненты более устойчивыми и предсказуемыми.
const host = document.querySelector("#my-component");
const shadowRoot = host.attachShadow({ mode: "open" });
shadowRoot.innerHTML = `
<style>
p {
color: red;
}
</style>
<p>Это текст внутри Shadow DOM</p>
`;
В этом примере создается Shadow DOM для определённого элемента и внутрь него добавляется стиль и HTML-контент. Стили, применённые к <p>, не будут влиять на элементы вне Shadow DOM, и наоборот.
Shadow DOM может быть создан в двух режимах:
Shadow DOM активно используется при создании кастомных веб-компонентов, таких как собственные date-picker, modal, tabs, dropdown и другие элементы интерфейса. Он помогает разработчикам строить автономные элементы, которые не ломаются от внешних стилей или скриптов.
Shadow DOM — это ключевая технология для создания модульных, изолированных и многоразовых интерфейсных компонентов. Он обеспечивает чистоту, стабильность и удобство сопровождения фронтенд-кода, особенно в масштабных приложениях.
Присоединяйтесь к нашим курсам для углубленного изучения области ИТ. Отправьте запрос для получения подробной информации!