主题
shadow
css
t-button,
s-button,
d-button {
margin: 1rem;
padding: 4px;
border: 1px solid red;
}
t-button span,
s-button span,
d-button span {
border: 1px solid slateblue;
}html
<t-button>
<span>click me</span>
</t-button>
<s-button>能出来吗?</s-button>
<d-button>能出来吗?</d-button>javascript
class TButton extends HTMLElement {
constructor() {
super();
console.log(this);
}
}
customElements.define("t-button", TButton);
class SButton extends HTMLElement {
constructor() {
super();
const shadow = this.attachShadow({ mode: "open" });
shadow.innerHTML = "<span>click me</span>";
this.shadow = shadow;
}
}
customElements.define("s-button", SButton);
console.log(document.querySelector("s-button").shadowRoot);
class DButton extends HTMLElement {
constructor() {
super();
const shadow = this.attachShadow({ mode: "closed" });
shadow.innerHTML = "<span>click me</span>";
this.shadow = shadow;
}
}
customElements.define("d-button", DButton);
console.log(document.querySelector("d-button").shadowRoot);