shadow dom类似于audio标签的一些属性,是我们外部无法更改的,做到了样式隔离
特点:
- 样式隔离:内部样式更改,不会影响外部样式
- 访问性:如果mode=open,可以通过shadow.shadowRoot进行方法,如果mode=closed,则无法访问
// html
<div>
<p>hello world</p>
<div id="shadow"></div>
</div>
// js
<script>
let shadowDom = shadow.attachShadow({mode: 'closed'});
let pDom = document.createElement('p');
let styleEle = document.createElement('style');
styleEle.textContent = `
p{color: green;}
`
pDom.innerHTML = 'hahaha';
shadowDom.appendChild(pDom);
shadowDom.appendChild(styleEle);
console.log(shadow.shadowRoot) // null
</script>