基础算法
数据库
Javascript
HTML 编程
SVG
附录
浏览器对等非标准的自定义 HTML 标签,就像对待标准元素一样,只是没有默认的样式和行为。这种处理方式是写入 HTML5 标准的。
这类自定义标签支持通过 CSS 或 style 属性设置样式,实例为HTMLUnkonwElement
,继承自HTMLElement
,有通用的属性、方法和事件(如onclick
)。
HTML 5 标准规定了自定义元素是合法的,W3C 就为自定义元素制定了一个单独的 Custom Elements 标准。它与其他三个标准放在一起:HTML Imports,HTML Template、Shadow DOM 统称为 Web Components 规范。
Custom Elements 标准对自定义元素的名字做了限制。自定义元素的名字必须包含一个中横线-
,所以
、
和
,甚至
都是正确的名字,而
和
还有<-clock>
是不正确的。这样的限制使得 HTML 解析器可以分辨那些是标准元素,哪些是自定义元素。
还需要定义相应的类,类中可以扩展需要的属性和方法。
经过定义之后,my-element
标签的类型就不再是HTMLUnkonwnElement
,而是MyElement
了。
自定义标签可以根据应用场景的语义来设置标签名。
将上面内容保存为share-button.html
文件,再通过link
标签引入到其他页面进行复用。
在页面中这样调用。
Web components 的一个重要特性是"封装"————可以将标记结构、样式和行为隐藏起来,并与页面上的其他代码相隔离,保证不同的部分不会混在一起,可使代码更加干净、整洁。其中,Shadow DOM 是关键所在,它可以将一个隐藏的、独立的 DOM 附加到一个元素上。
Shadow DOM 允许将隐藏的 DOM 树附加到常规的 DOM 树中——它以 shadow root 节点为起始根节点,在这个根节点的下方,可以是任意元素,和普通的 DOM 元素一样。
一些 Shadow DOM 特有的术语需要了解:
Shadow host
一个常规 DOM 节点,Shadow DOM 会被附加到这个节点上。Shadow tree
Shadow DOM 内部的 DOM 树。Shadow boundary
Shadow DOM 结束的地方,也是常规 DOM 开始的地方。Shadow root
Shadow tree 的根节点。使用attachShadow
方法为元素添加 Shadow DOM。open
表示添加后阴影节点可以通过shadowRoot
属性被外部访问,而closed
则不可以。
可以使用通用的方法操作 DOM。
可以为为 shadow DOM 添加一些 CSS 样式:
也可以使用外部样式。
TEMPATE 是 HTML 原生标签,TEMPLATE 标签中的内容不会呈现给用户。在 javascript 中可以通过content
属性获取 TEMPLATE 标签中的所有内容。
TEMPLATE 的内容被塞到container
中,字体颜色为红色,而不是蓝色。
TEMPLATE 标签中支持 SLOT 标签,slot
是一个插槽,一个坑位,可以在 TEMPLATE 中定义坑位,然后宿主中的内容可以标记属于哪一个坑位,这样宿主的内容就会被正确地插入到TEMPLATE 所标记的位置去。
处理结果为(实际上是 Shadow DOM 结构):
可以看到没什么用的文字 1
、没什么用的文字 2
、Slot 1
、Slot 2
都没有显示出来。其中前面两个被模板替换掉,后面两个本身就没有意义。
本文中示例来自网络。
(本文完)