什么是Shadow DOM
顾名思义:影子DOM
Shadow DOM看上去与普通DOM是一样的,但是有两点区别:
- 创建/使用的方式
- 与页面其他部分有关的行为方式
通常我们会创建DOM节点并将其附加至其他元素作为子项;
借助shadow DOM,我们可以创建作用域DOM树,该DOM树附加至该元素上,但是与其自身的真正的子项分离开;
这一作用域子树称为影子树,被附着的元素称为影子宿主;
在影子中添加的任何项均将称为宿主元素的本地项,包括<style>
这也是shadow DOM实现CSS样式作用域的方式
创建Shadow DOM
调用element.attachShadow()
// 创建dom节点<header>(影子宿主)
const header = document.createElement('header')
// 创建shadow DOM shadowRoot(影子根)
const shadowRoot = header.attachShadow({ mode: 'open' })
// 填充shadow DOM
shadowRoot.innerHTML = '<h1>Hello Shadow DOM</h1>'
💡