什么是Shadow DOM

顾名思义:影子DOM

Shadow DOM看上去与普通DOM是一样的,但是有两点区别:

  1. 创建/使用的方式
  2. 与页面其他部分有关的行为方式

通常我们会创建DOM节点并将其附加至其他元素作为子项;
借助shadow DOM,我们可以创建作用域DOM树,该DOM树附加至该元素上,但是与其自身的真正的子项分离开; 这一作用域子树称为影子树,被附着的元素称为影子宿主
在影子中添加的任何项均将称为宿主元素的本地项,包括<style>这也是shadow DOM实现CSS样式作用域的方式

创建Shadow DOM

调用element.attachShadow()

  1. // 创建dom节点<header>(影子宿主)
  2. const header = document.createElement('header')
  3. // 创建shadow DOM shadowRoot(影子根)
  4. const shadowRoot = header.attachShadow({ mode: 'open' })
  5. // 填充shadow DOM
  6. shadowRoot.innerHTML = '<h1>Hello Shadow DOM</h1>'

💡