夏天夏 夏天夏
首页
  • 技术分享

    • 小白都能看懂的闭包
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
    • 我所不了解的技术
    • 我喜欢的parcel
    • angular1使用
    • npm script打造前端工作流
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 年终总结

    • 2019年总结
    • 2020年总结
    • 2021年总结
  • JavaScript
  • CSS
  • 框架
  • Node
  • 服务
  • web3
  • 其他
我的作品
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

夏天夏

我也不饶岁月
首页
  • 技术分享

    • 小白都能看懂的闭包
    • 关于后台管理应用
    • 关于技术的取舍
    • 前端工程化
    • 切换node版本
    • 如何优雅的写事件代理
    • 我所不了解的技术
    • 我喜欢的parcel
    • angular1使用
    • npm script打造前端工作流
  • 发布一个node插件

    • 发布一个npm包
    • 如何打包一个插件工具库
    • 打包工具的选择
  • 年终总结

    • 2019年总结
    • 2020年总结
    • 2021年总结
  • JavaScript
  • CSS
  • 框架
  • Node
  • 服务
  • web3
  • 其他
我的作品
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • JavaScript

  • CSS

  • 框架

  • Node

  • 服务

  • 其他

    • 编程概念
    • 打包工具
    • 关于前端接口管理的一些思考
    • 开发环境
    • 浏览器兼容问题
    • 前端单元测试
    • 前端资源
    • 实用代码段
    • 书籍
    • 造轮子思路
    • 造轮子思路二
    • 自定义组件
      • Web components
      • Custom elements
      • HTML Imports
      • shadow DOM
        • 使用步骤
        • examples
        • 宿主样式:host
    • ajax
    • git笔记
    • iview踩坑记
    • sass
    • webpack原理跟配置
    • Canvas
    • OpenGraph
    • SEO
  • 设计模式

  • web3

  • react

  • 学习笔记
  • 其他
夏天夏
2022-05-15
目录

自定义组件

# Web components

Web Components是一套不同的技术,允许您创建可重用的定制元素

# Custom elements

Custom elements(自定义元素):一组JavaScript API,允许您定义custom elements及其行为,然后可以在您的用户界面中按照需要使用它们。 HTML templates(HTML模板):<template> 和 <slot> 元素使您可以编写不在呈现页面中显示的标记模板。然后它们可以作为自定义元素结构的基础被多次重用。

# HTML Imports

HTML Imports(HTML导入):一旦定义了自定义组件,最简单的重用它的方法就是使其定义细节保存在一个单独的文件中,然后使用导入机制将其导入到想要实际使用它的页面中。HTML 导入就是这样一种机制,尽管存在争议 — Mozilla 根本不同意这种方法,并打算在将来实现更合适的。

# shadow DOM

Shadow DOM接口是Web components关键所在,它可以将一个隐藏的、独立的DOM添加到一个元素上,video 标签就是一个很好的例子。

# 使用步骤

  1. 定义一个影子宿主,如果是自定义组件则用-隔开如<g-button>或<g-input>,防止与html标签重名
  2. 宿主内部创建一个 (影子根)shadow root 作为 shadow tree 的根节点
  3. 根节点的内容 createShadowRoot().appendChild(clone)
document.querySelector('host-dom') //1.定义一个影子宿主
.createShadowRoot()				   //2.宿主内部创建一个根节点
.innerHTML = '<p">我是影子根的内容</p>'//3.根节点的内容
1
2
3

# examples

// 影子宿主(shadow host)
var shadowHost = document.querySelector('.shadowhost');
// 创建影子根(shadow root)
var shadowRoot = shadowHost.createShadowRoot();
// 影子根作为影子树的第一个节点,其他的节点比如p节点都是它的子节点。
shadowRoot.innerHTML = '<p">我是影子根标签的内容</p>';    
1
2
3
4
5
6

# 宿主样式:host

:host{xxx} 	/*当前宿主*/
:host(.different) /*仅当宿主元素是 .different 的后代元素时*/
1
2
编辑 (opens new window)
#组件#封装
上次更新: 2022/05/30, 17:42:07
造轮子思路二
ajax

← 造轮子思路二 ajax→

最近更新
01
远程办公的个人思考
02-21
02
SEO
01-02
03
NFT的价值
12-27
更多文章>
Theme by Vdoing | Copyright © 2019-2025 夏天夏 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式