定义自己的 HTML 标签

新版浏览器已经对自定义标签提供了支持,详细参照W3C 标准中关于自定义 HTML 标签相关内容的简单汇总。刚重写了 Popup 标签,本文主要是记录自定义标签过程中的一些注意事项。

标签示例

标签名中必须包含中线-,是支持标准中明确要求,否则不能解析。

其他就必要用 Javascript 来实现了。

定义类

先上代码。

一些说明和注意事项。

类结构及属性和方法只是为了说明编码过程,实际逻辑比这要复杂很多。

定义默认样式

一般情况下标签不定义样式是没法用的,Popup 标签本质是一个浮动层,所以要有自己的默认样式。有三种可选的方案,一是使用 Shadow DOM 将样式定义在标签内部,二是引入一个额外的样式文件,三是自动添加一些样式要页面上。

如果我们希望用户能控制样式,那么就不能使用 Shadow DOM 的方式。第二种方式每次使用都要手工引入外部文件,也不理想。所以还是自动附加样式到页面上,代码如下:

扩展属性和方法

这时 HTMLPopupElement 就相当一个原生标签了,除了在类上进行属性和方法定义以外,可以使用多种方法对其进行属性和方法扩展,参见 扩展 HTML 原生标签

如何调用

自定义标签就像原生标签一样使用,无论是document.getElementById方法还是$$$,所有选择器都可以使用。

初始化的时机

很多初始化操作可以在构造函数中实现,但是自定义元素标准要求一些直接属性赋值的操作不能在构造函数中使用,需要自己在类外添加初始化逻辑。

除了定义默认样式,有时还需要对标签进行初始化。HTMLPopupElement 就要隐藏整个元素,并且定义模态层等操作。HTMLPopupElement 选择了两个时点进行初始化,一个时点是在页面加载完成时进行一次全局初始化,还一个时点是在open方法中,这主要应对页面还没有加载完成,用户就要使用 HTMLPopupElement,而且使用 HTMLPopupElement 只有open方法。

(本文完)


微信公众号
码农老吴  |  星源工作室  |  开发月志  |  问题反馈
联系我们:wu@qross.io     手机/微信:18618171102
京 ICP 备 20027445 号
$(h1)!