方法
2023年08月15日
一、element.attachShadow()
element.attachShadow()
方法给指定的元素挂载一个 Shadow DOM
,并且返回对 ShadowRoot
的引用。
1.1 语法
const shadowroot = element.attachShadow(shadowRootInit);
-
shadowRootInit
: 一个ShadowRootInit
字典,包括下列字段:-
mode
模式: 指定Shadow DOM
树封装模式的字符串,可以是以下值:-
open
:shadow root
元素可以从js
外部访问根节点 -
closed
: 拒绝从js
外部访问关闭的shadow root
节点
-
-
delegatesFocus
: 一个布尔值,当设置为true
时,指定减轻自定义元素的聚焦性能问题行为。 当shadow DOM
中不可聚焦的部分被点击时,让第一个可聚焦的部分成为焦点,并且shadow host
(影子主机)将提供所有可用的:focus
样式。
-
-
shadowroot
: 是一个DOM
子树的根节点,它与文档的主DOM
树分开渲染
1.2 用法
附加到内置元素
const app = document.querySelector('#app');
const shadowDom = app.attachShadow({ mode: 'open'});
const div1 = document.createElement('div');
div1.innerHTML = 'shadowDom 元素内容'
shadowDom.appendChild(div1);
附加到自定义元素
<custom-element id="3" url="http"></custom-element>
<script>
class CustomElement extends HTMLElement{
constructor(){
super();
const shadow = this.attachShadow({ mode: "open" });
const wrapper = document.createElement('div');
wrapper.innerHTML = "自主定制元素"
console.log(this.getAttribute('id'));
console.log(this.hasAttribute('url'))
shadow.appendChild(wrapper);
}
}
customElements.define('custom-element',CustomElement);
</script>