自定义元素为作者构建自己的完整功能DOM元素提供了一种方法。虽然作者总是可以在他们的文档中使用非标准元素,但通过脚本编写或类似方法添加特定于应用程序的行为后,这些元素在历史上一直不符合要求,而且功能也不是很强大。通过定义自定义元素,作者可以通知解析器如何正确构建元素以及该类的元素如何对变化作出反应。

一、创建一个自定义元素

我们想要创建一个为了说明如何创建自主自定义元素,我们定义一个自定义元素,该元素封装为国家/地区标志呈现小图标。我们的目标是能够像这样使用它:

<flag-icon country="nl"></flag-icon>
为此,我们首先为自定义元素声明一个类,并扩展 HTMLElement
class FlagIcon extends HTMLElement {constructor() {super();this._countryCode = null;}static get observedAttributes() { return ["country"]; }attributeChangedCallback(name, oldValue, newValue) {// name will always be "country" due to observedAttributesthis._countryCode = newValue;this._updateRendering();}connectedCallback() {this._updateRendering();}get country() {return this._countryCode;}set country(v) {this.setAttribute("country", v);}_updateRendering() {// Left as an exercise for the reader. But, you'll probably want to// check this.ownerDocument.defaultView to see if we've been// inserted into a document with a browsing context, and avoid// doing any work if not.}
}
customElements .define(“ flag-icon ”,FlagIcon);

使用方法

在html中直接使用

<flag-icon country="nl"></flag-icon>

使用js添加

const flagIcon = document.createElement("flag-icon")
flagIcon.country = "jp"
document.body.appendChild(flagIcon)const flagIcon = new FlagIcon()
flagIcon.country = "jp"
document.body.appendChild(flagIcon)

二、创建一个定制的内置元素

class PlasticButton extends HTMLButtonElement {constructor() {super();this.addEventListener("click", () => {alert('hello world')});}
}
customElements.define("button-hello", PlasticButton, { extends: "button" });

Custom Elements详解相关推荐

  1. Echarts之甘特图type: ‘custom‘参数详解

    甘特图 const groupData = XEUtils.groupBy(data, "eqpName"); //分组后的数据 const yAxisData = Object. ...

  2. 【云原生】Kubernetes CRD 详解(Custom Resource Definition)

    文章目录 一.概述 二.定制资源 1)定制资源 和 定制控制器 2)定制控制器 3)Operator 介绍 1.Operator Framework 2.Operator 安装 3.安装 Operat ...

  3. ArcGIS Engine中的Symbols详解

    转自原文 ArcGIS Engine中的Symbols详解 本文由本人翻译ESRI官方帮助文档.尊重劳动成果,转载请注明来源. Symbols ArcObjects用了三种类型的Symbol(符号样式 ...

  4. LwIP 之六 详解动态内存管理 内存池(memp.c/h)

      该文主要是接上一部分LwIP 之 详解动态内存管理 内存堆(mem.c/h),该部分许多内容需要用到上一篇的内容.该部分主要是详细介绍LwIP中的动态内存池.整个内存池的实现相较于内存堆来说,还是 ...

  5. Java解析HTML之HTMLParser使用与详解

    1.相关资料 官方文档:http://htmlparser.sourceforge.NET/samples.html API:http://htmlparser.sourceforge.net/jav ...

  6. Android热更新详解

    一 前言介绍 正好最近又看到热更新,对以前Android 热修复核心原理:ClassLoader类加载机制做了点补充. 从16年开始开始,热修复技术开始在安卓界流行,它以classloader类加载机 ...

  7. HTMLParser 使用详解

    简介 htmlparser是一个纯的java写的html解析的库,它不依赖于其它的java库文件,主要用于改造或 提取html.它能超高速解析html,而且不会出错.现在htmlparser最新版本为 ...

  8. xcode各项配置详解

    1.Xcode IDE概览 说明:从左到右,依次是"导航窗格(Navigator)->边列(Gutter)->焦点列(Ribbon)->代码编辑窗口(Standard/Pr ...

  9. SAP UI5 应用开发教程之一百零二 - SAP UI5 应用的打印(Print)功能实现详解试读版

    一套适合 SAP UI5 初学者循序渐进的学习教程 作者简介 Jerry Wang,2007 年从电子科技大学计算机专业硕士毕业后加入 SAP 成都研究院工作至今.Jerry 是 SAP 社区导师,S ...

最新文章

  1. Java设计模式菜鸟系列(四)工厂方法模式建模与实现
  2. 让你分分钟学会Javascript中的闭包
  3. SSM商城项目(八)
  4. 输出10000内所有素数
  5. 【LeetCode】0830.较大分组的位置
  6. pyspark报错java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
  7. MAX10 ADC的一些基知识
  8. js与Ajax实现浮动留言板(留言写入sqlserver数据库)
  9. 数据库优化之mysql【转】
  10. PHP血清蛋白的功效,血清蛋白美容液的作用是什么
  11. 2010年年终“飞”的总结
  12. Hive命名空间-自定义变量
  13. 不同系统的文件格式转换
  14. Java面试题大全带答案
  15. 物联网LoRa系列-25:LoRa终端--LoRaWAN协议简介与LoRa WAN终端软件选择
  16. windows10安装oracle10 g客户端
  17. linux redis配置文件位置,Linux 安装配置Redis
  18. Review Board了解
  19. oracle imp 版本错误,解决imp导入数据报IMP-00098错误
  20. [云原生专题-41]:K8S - 核心概念 - Service业务的统一网关接口Ingress详解、安装、常见操作命令

热门文章

  1. 云服务器还是服务器托管,中小企业应如何选择?
  2. SAP中采购订单中固定汇率选项的影响分析
  3. 智能实验室信息化系统的建设与管理
  4. 精致的动画特效源代码
  5. 高校数据可视化(智慧校园)
  6. 温度和芯片供电电压影响芯片的速度和性能
  7. 【Matlab基础学习】运筹学-线性规划简单总结
  8. 远山的呼唤山村生存挑战营出行通知
  9. WINDOWS 2008 R2无法安装显卡驱动问题解决
  10. H5创建webApp保存到桌面。