Ответ
Shadow DOM — это изолированное поддерево DOM, которое не влияет на основной документ. Оно позволяет инкапсулировать стили и логику компонента, предотвращая конфликты.
Пример:
<div id="host"></div>
<script>
const host = document.getElementById('host');
const shadowRoot = host.attachShadow({ mode: 'open' });
shadowRoot.innerHTML = `
<style>p { color: red; }</style>
<p>Текст внутри Shadow DOM</p>
`;
</script>
Здесь стиль p
не повлияет на другие элементы вне Shadow DOM.
Особенности:
mode: 'open'
— доступ к ShadowRoot через JavaScript.mode: 'closed'
— полная изоляция (редко используется).- Подходит для веб-компонентов.