自定义元素(custom elements)

浏览器将自定义元素保留在 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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Custom Elements 在迭代中的应用 Custom Elements 是 Web Components 的一部分,它允许开发者创建自定义的 HTML 元素,并在页面中使用。在迭代开发中,Custom Elements 可以帮助开发者更好地组织和管理页面中的元素,提高代码的可维护性和可扩展性。 通过使用 Custom Elements,开发者可以将页面中的元素封装成自定义的组件,然后在页面中使用这些组件。这样可以将页面中的代码分解成更小的模块,使得代码更易于理解和维护。此外,Custom Elements 还可以与其他 Web Components 技术(如 Shadow DOM 和 HTML Templates)一起使用,进一步提高代码的可重用性和可扩展性。 总之,Custom Elements 在迭代开发中的应用非常广泛,它可以帮助开发者更好地组织和管理页面中的元素,提高代码的可维护性和可扩展性。 ### 回答2: 在迭代r中,custom elements是Web组件规范的一部分,它允许开发者创建自定义的HTML元素和标签,以便在网页中使用。custom elements使用了Shadow DOM和HTML Templates来实现这一功能。 通过使用custom elements,开发者可以将自定义的HTML元素定义为一个类,该类继承自HTMLElement类,并包含一些自定义的行为和属性。然后,开发者可以在网页中使用这个自定义的HTML元素,就像使用内置的HTML元素一样。为了在使用这个自定义元素时控制其样式和行为,开发者可以使用Shadow DOM来隔离该元素的样式和DOM。这样,在不同的自定义元素中,相同的样式和DOM结构会得到重用,从而提高了代码的可维护性。 另外,使用custom elements,开发者可以为自定义元素添加生命周期方法,如connectedCallback、disconnectedCallback等。这些方法可以在自定义元素被添加到文档树或从文档树中移除时被调用,开发者可以在这些方法中执行一些初始化或清理的操作。 custom elements的另一个特性是可以为自定义元素定义自定义属性,这些属性可以通过JavaScript来操作,并且能够与其他属性或DOM节点进行绑定,实现更加灵活的交互和功能。 总之,custom elements为开发者提供了一种创建和使用自定义HTML元素的方式,使得代码更加模块化和可重用,同时提供了更多的控制权和灵活性。这对于构建大型Web应用程序和组件库非常有帮助。 ### 回答3: Custom Elements是一种Web技术,它允许我们创建自定义HTML元素,这些元素具有自己的行为和功能。在迭代R中,Custom Elements得到了进一步的改进和扩展。 首先,在迭代R中,Custom Elements的生命周期方法得到了改进。我们可以使用connectedCallback()方法来指定当自定义元素被连接到文档的DOM时所执行的操作。同样地,我们可以使用disconnectedCallback()方法来指定当自定义元素从文档的DOM中移除时所执行的操作。这些改进使得在自定义元素的生命周期中执行特定的操作变得更加灵活和可定制。 其次,在迭代R中,Custom Elements的CSS作用域得到了加强。我们可以使用::part伪类选择器来选择和控制Custom Elements的内部部分,这使得我们可以更好地封装和组织自定义元素的样式。此外,我们还可以使用::theme()伪类选择器来根据用户主题偏好来调整Custom Elements的外观。 第三,在迭代R中,Custom Elements的继承功能得到了改进。我们可以通过extends属性来让一个自定义元素继承另一个自定义元素,从而实现代码和功能的重用。这种继承机制使得开发者可以更方便地创建类似的自定义元素,并且可以从父元素继承一些通用的功能。 总而言之,在迭代R中,Custom Elements在生命周期方法、CSS作用域和继承功能等方面都获得了改进和扩展。这些改进使得开发者能够更好地创建和控制自定义HTML元素,为用户提供更丰富和可定制的Web体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值