Skip to content

创建 custom element

创建 custom element 是 Web components 一个关键的功能。custom element 跟我们常用内建标签(如 <div><span>)都是 HTML 元素,只不过 custom element 的行为由开发者自己定义。

custom element 的定义通过类来实现,这个类继承自 HTMLElement 或者内建的 HTML 元素。如果 custom element 继承自 HTMLElement,则元素的所有功能都需要开发者重新实现。下面的例子展示了一个继承自 HTMLElement 的 custom element 的定义:

ts
class MyCustomElement extends HTMLElement {
  constructor() {
    super();
  }

  // 在此处编写自定义元素的功能
}

在 class 的 constructor 中,我们可以设置初始化状态以及默认值,注册事件监听器,创建 shadow DOM 等。但需要注意的是,在 constructor 中不能访问元素的属性以及子元素,因为在实例化的时候,custom element 还没有添加到文档中。