讲师中心 微信公众号
AI工具推荐 视频效率加速

JavaScriptWeb组件_CustomElements自定义元素

夜晨姑娘_7984

夜晨姑娘_7984

发布时间:2025-11-23 18:43:02

|

427人浏览过

|

来源于php中文网

原创

Custom Elements 是 Web Components 的核心功能,允许开发者通过继承 HTMLElement 创建带行为的自定义 HTML 标签,如 <counter-button>;需使用 customElements.define() 注册,标签名必须含短横线;支持 constructor、connectedCallback 等生命周期钩子,结合 Shadow DOM 可实现高封装性组件,适用于现代浏览器。

javascriptweb组件_customelements自定义元素

自定义元素(Custom Elements)是 Web Components 的核心功能之一,允许开发者创建全新的 HTML 标签,并赋予其特定的行为和结构。通过 JavaScript 定义类并注册元素名称,你可以在网页中像使用原生标签一样使用这些自定义标签。

什么是 Custom Elements?

Custom Elements 是浏览器原生支持的 API,让你能够:

  • 定义新的 HTML 元素名称(需包含短横线 -)
  • 绑定一个 JavaScript 类来控制元素的行为
  • 在页面中直接使用自定义标签,如 <my-button></my-button>

这类元素可以封装 UI 组件逻辑,实现可复用、独立且语义化的代码结构。

如何定义一个自定义元素?

步骤如下:

立即学习Java免费学习笔记(深入)”;

html-ppt-to-pdf
html-ppt-to-pdf

将使用 `

` 约定的 HTML 幻灯片转换为高保真、矢量文本 PDF(使用 Playwright + Chromium 原生 PDF 功能)。

下载
  1. 创建一个继承自 HTMLElement 的类
  2. 在类中添加需要的逻辑(如属性、事件、渲染等)
  3. 使用 customElements.define() 注册元素

示例:创建一个简单的计数器按钮

class CounterButton extends HTMLElement {
  constructor() {
    super();
    this.count = 0;
    this.textContent = `点击次数: ${this.count}`;
  }

  connectedCallback() {
    this.addEventListener('click', () => {
      this.count++;
      this.textContent = `点击次数: ${this.count}`;
    });
  }
}

customElements.define('counter-button', CounterButton);

之后即可在 HTML 中使用:

<counter-button></counter-button>

生命周期回调函数

自定义元素提供几个关键的生命周期钩子,用于控制行为:

  • constructor:必须调用 super(),初始化状态和设置默认值
  • connectedCallback:元素插入 DOM 时触发,适合绑定事件或渲染内容
  • disconnectedCallback:元素从 DOM 移除时调用,可用于清理资源
  • attributeChangedCallback:监听属性变化,需配合 observedAttributes 静态属性使用

例如监听属性变化:

static get observedAttributes() {
  return ['label'];
}

attributeChangedCallback(name, oldValue, newValue) {
  if (name === 'label') {
    this.textContent = newValue;
  }
}

注意事项与最佳实践

  • 自定义标签名必须包含短横线(-),避免与未来 HTML 标签冲突
  • 不要覆盖已存在的元素名称
  • 尽量将 DOM 操作放在 connectedCallback 中执行
  • 合理使用 Shadow DOM 可增强封装性(可结合使用)
  • 注意浏览器兼容性:现代主流浏览器均已支持,旧版 IE 不支持

基本上就这些。Custom Elements 提供了一种干净、标准的方式构建可复用组件,无需框架也能实现组件化开发。结合 Shadow DOM 和模板(template)标签,能进一步提升封装能力。不复杂但容易忽略细节,比如正确调用 super() 或注册时机问题。

热门AI工具

更多
超级简历WonderCV

一款AI办公效率工具,主要用于免费求职简历模版下载制作,应届生职场人必备简历制作神器,适合需要提升相关任务效率的用户。

VibeKnow
VibeKnow Hot

一款AI视频创作工具,主要用于全球首个AI知识视频创作平台,文档、文章、网页,一键生成视频,适合需要提升相关任务效率的用户。

DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

墨刀AI
墨刀AI Hot

一款AI图像与设计工具,主要用于产品经理的专属智能体,适合需要提升相关任务效率的用户。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

相关专题

更多
typedef和define区别
typedef和define区别

typedef和define区别在类型检查、作用范围、可读性、错误处理和内存占用等。本专题为大家提供typedef和define相关的文章、下载、课程内容,供大家免费下载体验。

313

2023.09.26

define的用法
define的用法

define用法:1、定义常量;2、定义函数宏:3、定义条件编译;4、定义多行宏。更多关于define的用法的内容,大家可以阅读本专题下的文章。

619

2023.10.11

counta和count的区别
counta和count的区别

Count函数用于计算指定范围内数字的个数,而CountA函数用于计算指定范围内非空单元格的个数。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2308

2023.11.20

class在c语言中的意思
class在c语言中的意思

在C语言中,"class" 是一个关键字,用于定义一个类。想了解更多class的相关内容,可以阅读本专题下面的文章。

3116

2024.01.03

python中class的含义
python中class的含义

本专题整合了python中class的相关内容,阅读专题下面的文章了解更多详细内容。

286

2025.12.06

DOM是什么意思
DOM是什么意思

dom的英文全称是documentobjectmodel,表示文件对象模型,是w3c组织推荐的处理可扩展置标语言的标准编程接口;dom是html文档的内存中对象表示,它提供了使用javascript与网页交互的方式。想了解更多的相关内容,可以阅读本专题下面的文章。

6441

2024.08.14

NumPy常见函数使用方法
NumPy常见函数使用方法

本专题整理 NumPy 常见函数使用方法相关教程,覆盖函数大全、参数用法、数组运算、统计聚合、排序处理、where 条件筛选、linspace 创建数列等常用场景,帮助读者快速掌握 NumPy 函数调用思路和实际数据处理技巧。

0

2026.09.22

NumPy性能优化版本更新与常见报错排查
NumPy性能优化版本更新与常见报错排查

本专题整理 NumPy 性能优化、版本更新与常见报错排查相关教程,覆盖向量化计算、广播性能、内存布局、NumPy 2.0 升级、版本兼容冲突、安装导入报错、dtype 溢出、矩阵运算异常和 broadcasting 报错修复,帮助读者系统掌握 NumPy 性能调优与问题定位方法。

20

2026.09.22

Vibeknow在线使用入口合集
Vibeknow在线使用入口合集

本专题汇总了Vibeknow在线创作视频的官方入口及网页版使用教程,涵盖PPT、PDF、Word等文档一键转讲解视频的核心操作,并整理了免费版水印规则与手机端浏览器访问指南,助你快速将知识内容视频化。

20

2026.09.21

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
WebStorm 官方调试文档
WebStorm 官方调试文档

共0课时 | 0人学习

React 教程
React 教程

共58课时 | 11.9万人学习

TypeScript 教程
TypeScript 教程

共19课时 | 6.5万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn