You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
classDemoextendsHTMLElement{constructor(){super()constshadowRoot=this.attachShadow({mode: "closed"})shadowRoot.innerHTML=`<div>我是 web components </div>`this.shadow=shadowRoot}}
Web Components
Web Components 用原生 js 的方式 构建模块化组件
Web Components 三板斧
<template>
和<slot>
元素使您可以编写不在呈现页面中显示的标记模板。然后它们可以作为自定义元素结构的基础被多次重用,使用过Vue和React等热门框架的应该熟悉。组件的声明
声明一个 class 继承 HTMLElement
组件的注册
customElements.define(name, constructor, options)
影子节点封装
调用 attachShadow 将一个shadow DOM附加到自定义元素上。使用通常的DOM方法向shadow DOM中添加子元素、事件监听器等等
影子节点添加子元素方式
innerHTML 方式
innerHTML 方式 向影子节点 赋值 一个字符串式的标签
appendChild 方式
appendChild 方式 向影子节点块后增加一个 element 节点
template 方式
向影子节点添加CSS
createElement 的方式
adoptedStyleSheet 的方式
注意adoptedStyleSheet与style标签混合使用都会生效,互相影响
生命周期
The text was updated successfully, but these errors were encountered: