zoukankan      html  css  js  c++  java
  • 谈谈Web Components

    一.什么是web components?

        web components是一套允许开发人员自定义元素创建可重用组件的技术

    二.怎么使用?

      1.创建一个类或函数来指定web组件功能,例如使用es6的class

      2. 通过customElements.define()方法注册自定义元素,并向其传递要定义的元素名称,指定元素功能的类,以及可选的其所继承自的元素。

      3.如果需要的话可以使用Element.attachShadow()方法将一个shadow DOM附加到自定义元素上。使用原生的DOM方法向shadow DOM中添加子元素。

     4.如果需要的话,使用<template>和<slot>定义一个HTML模板。再次使用常规DOM方法克隆模板并将其附加到shadow DOM中。

     5.最后在页面中像使用原生的HTML元素一样,使用自定义的元素

    三.实例

     

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>Web Components</title>
    </head>
    <body>
        <custom-button></custom-button>
          //这是自定义的元素(像使用原生HTML元素一样使用自定义的元素)
        <template id="custom-button">//使用template定义一个HTML模板
            <button>自定义按钮</button>
              //添加样式
             <style>
                button {
                    display: inline-block;
                    line-height: 1;
                    white-space: nowrap;
                    cursor: pointer;
                    text-align: center;
                    box-sizing: border-box;
                    outline: none;
                    margin: 0;
                    transition: .1s;
                    font-weight: 500;
                    padding: 12px 20px;
                    font-size: 14px;
                    border-radius: 4px;
                    color: #fff;
                    background-color: #409eff;
                    border-color: #409eff;
                    border: 0;
                }
    
                button:active {
                    background: #3a8ee6;
                    border-color: #3a8ee6;
                    color: #fff;
                }
              </style>
        </template>
        <script>
            class CustomButton extends HTMLElement {
                  constructor() {
                     super()
                     const templateContent=document.getElementById('custom-button').content
                //获取自定义模板
                      const shadowRoot = this.attachShadow({mode:'open'})
                      shadowRoot.appendChild(templateContetn.cloneNode(true))
                      //使用attachShadow()方法将一个shadow DOM附加到自定义元素
                      shadowRoot.querySelector('button').onClick=()=>{
                       alert('hello world')
                     }
                     //绑定点击事件
                  }
             }
           customElements.define('custom-button', CustomButton)
          //注册自定义元素
         </script>
    </body>            

    四.运行结果

  • 相关阅读:
    .net core 2.2, new Bitmap出错 The type initializer for 'Gdip' threw an exception
    瑞萨单片机学习笔记(待续)
    Linux-GitLab安装及汉化
    mysql5.7 ibtmp1文件过大
    #和$的区别
    RTP封装h264
    一个项目同时需要向两个地址推送
    git命令
    echart绘制进度条、仪表盘、各种样式的折线图、饼图、环形图、地图等
    前端在实现类似控制台命令行或者告警信息提示时,需要保持滚动条始终停留在最新的信息位置,也就是最底部
  • 原文地址:https://www.cnblogs.com/myspecialzone/p/14372764.html
Copyright © 2011-2022 走看看