自定义元素(custom elements)
来源:互联网 发布:医院排号系统编程 编辑:程序博客网 时间:2024/06/06 04:09
浏览器将自定义元素保留在 DOM 之中,但不会任何语义。除此之外,自定义元素与标准元素都一致
事实上,浏览器提供了一个HTMLUnknownElement,HTMLElement对象,所有自定义元素都是该对象的实例。
var tabs=document.createElement("tabs"); console.log(tabs instanceof HTMLUnknownElement);//true console.log(tabs instanceof HTMLElement);//true
Custom Elements 标准:“自定义元素的名字必须包含一个破折号(-)
一旦名字之中使用了破折号,自定义元素就不是HTMLUnknownElement的实例了。
var tabs=document.createElement("my-tabs"); console.log(tabs instanceof HTMLUnknownElement);//false console.log(tabs instanceof HTMLElement);//true
Custom Elements 标准规定了,自定义元素的定义可以使用 ES6 的class语法
<!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> </head> <body> <my-element content="Custom Element"> Hello</my-element> </body></html><script>class MyElement extends HTMLElement {//自定义元素的定义可以使用ES6的class语法 get content() { return this.getAttribute('content'); } set content(val) { this.setAttribute('content', val); }}//原生的window.customElements对象的define方法用来定义 Custom Element。该方法接受两个参数,第一个参数是自定义元素的名字,第二个参数是一个 ES6 的class。window.customElements.define('my-element', MyElement);window.onload=function(){//在页面元素加载完之后,才执行function customTag(tagName, fn){//Array.from([arguments]);可以将字符串,数组,类数组集合转化为数组 Array .from(document.getElementsByTagName(tagName)) .forEach(fn);}function myElementHandler(element) { element.textContent = element.content;}customTag('my-element', myElementHandler);};</script>
另外一个比较简单的例子:
<!doctype html><html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content=""> <meta name="Keywords" content=""> <meta name="Description" content=""> <title>Document</title> <style> greeting{ display:block; font-size:36px; color:red; } </style> <script> window.onload = function() { function customTag(tagName, fn){ console.log(document.getElementsByTagName("div")); Array .from(document.getElementsByTagName(tagName)).forEach(fn); } function greetingHandler(element) { element.innerHTML = '你好,世界'; } customTag('greeting', greetingHandler); }</script> </head> <body> <div></div> <greeting>Hello World</greeting> <greeting>Hello World</greeting> <greeting>Hello World</greeting> </body></html>
其实更关心的是,HTML组件的开发,这是一个很好的雏儿。
h t t p s : / / d e v e l o p e r . mo z il l a .o r g / e n- U S / d o cs / W e b / J a va S c ri p t
阅读全文
0 0
- 自定义元素(custom elements)
- HTML5 Web组件元素集合 – Custom Elements
- DTD-元素(Elements)
- UITextField自定义(custom)
- Knockoutjs:Component and Custom Elements
- 块级元素(Block-Level Elements)
- Replaced Elements(可置换元素)
- React--Rendering Elements(渲染元素)
- MySQL 5.1自定义安装教程(Custom)
- 实现自定义模型(Implementing Custom Models)
- 自定义控件(custom control)的使用
- Android Custom View (自定义 View)
- K8s 多自定义计量(custom metrics)
- [Repost]Custom Elements defining new elements in HTML
- CSS 伪元素 (Pseudo-elements)(二十一)
- 【SL学习】——嵌套元素(Nesting Elements)
- 常用的MRP元素(MRP elements)缩写如下:
- UML 时序图元素(Sequence Diagram Elements)
- 《Effective Java 学习笔记 第一章》
- Retrofit2.0不进行Json解析,直接查看返回String
- 查找练习 hash——出现过的数字
- 如何在Hive上建表并导入数据
- Android Fragment 深度解析
- 自定义元素(custom elements)
- #HDU 2830 Matrix Swapping II
- 代码中dumphprof数据
- rails 路由新开一个namespace
- Jackson 高性能的JSON处理 ObjectMapper
- 移动端border:1px 解决办法
- ECharts 多个柱状图动态获取json数据
- C++遍历string
- python 多进程编程