如何创建 Shadow DOM?
<div class="dom"></div>
let el = document.querySelector('.dom');
el.attachShadow({ mode: 'open' });
// Just like prototype & constructor bi-directional references, we have...
el.shadowRoot; // the shadow root.
el.shadowRoot.host; // the element itself.
// put something in shadow DOM
el.shadowRoot.innerHTML = 'Hi I am shadowed!';
// Like any other normal DOM operation.
let hello = document.createElement('span');
hello.textContent = 'Hi I am shadowed but wrapped in span';
el.shadowRoot.appendChild(hello);
Q&&A - 我们能否使用 append()
来取代 “appendChild()
?
当然可以!但是在 MDN文档里,这两种方法有一些区别。
ParentNode.append()
允许你添加 DOMString 对象;然而Node.appendChild()
仅仅接受Node对象ParentNode.append()
没有返回值; 然而Node.appendChild()
返回添加的 Node 对象.ParentNode.append()
可以添加多个节点和字符串;然而Node.appendChild()
只能添加一个 node 节点
如果我们使用 input
元素而不是 div
元素关联 shadow DOM
,会怎样?
好吧,这并没有什么作用。因为浏览器早已设定为这些元素设定好了他们的shadow DOM。当你这样做之后,浏览器控制条会飘出一串红色的英文字母。?