Comments (2)
Shadow DOM(影子DOM)
- 概念
Shadow DOM是HTML的一个规范 ,它允许浏览器开发者封装自己的HTML标签、CSS样式和特定的javascript代码,创建这些新标签内容和相关的的API被称为Web Component。包括:- shadow-root:Shadow DOM的根节点;
- shadow-tree:Shadow DOM包含的子节点树结构;
- shadow-host:Shadow DOM的容器元素,如:
- 存在的意义
Shadow-dom 是游离在 DOM 树之外的节点树,但是他的创建基于普通 DOM 元素。并且创建后的 Shadow-dom 节点可以从界面上直观的看到。它具有非常良好的密封性,可以让我们自己去开发和封装一些属性功能在DOM节点中。比如 - 如何使用
- 使用伪元素控制 shadow-dom 样式
在Chrome的控制台中查看可以发现,每一个节点都包含了pesudo属性,知道这些属性后,我们可以用伪类的方式,比如:input::-webkit-input-placeholder选择器表示选中在标签中用到的pesudo为-webkit-input-placeholder的属性。 - 使用 Javascript 创建一个 shadow-dom 元素
可以通过element.createShadowRoot()来创建目标容器(shadow-host)对应deshadow-root。比如:
- 使用伪元素控制 shadow-dom 样式
let host = document.querySelector('div');
let root = host.createShadowRoot();
root.innerHTML = '<h1 style="background-color: #2cacff; color: white;">这是支持shadow-dom的标题~</h1>';
from daily.
Shadow DOM
Shadow是HTML的一个规范,它允许浏览器开发者封装己自己的HTML标签,CSS样式和javascript代码,同时也可以让开发人员创建类似
内容:
学习一个Shadow需要了解的相关知识有:
Shadow Host: 一个常规的DOM节点 Shadow DOM 会被添加到这个节点上。
Shadow Three: Shadow DOM 内部的DOM树。
Shadow boundary: Shadow DOM 结束的地方 也是常规DOM 开始的地方。
Shadow root: Shadow Three 根结点。
作用
Shadow DOM 可以在WEB平台本地封装和组件化,而不必依赖像<iframe>这样的工具, 在组件中使用自己独立的样式和方法,并且保持自己的独立性。
使用
1、 创建一个Shadow
const shadowEl = document.querySelector(".shadow-host");
const shadow = shadowEl.attachShadow({mode: 'open'});
2、将新元素添加到Shadow 中(和基本dom操作相似,只是需要加入shadow中)
shadow.appendChild(child);
from daily.
Related Issues (20)
- 第二十三题:新窗口打开链接的方法是什么?那么如何使全站链接都打开新窗口? HOT 1
- 第二十四题:介绍一下HTML5中的ruby标签 HOT 2
- 第二十五题:new操作符都做了什么事情? HOT 2
- 第二十六题:你所在的团队有规范吗?举例说明都定义了哪些规范? HOT 1
- 第二十七题:用洗牌算法实现一个打乱数组的方法 HOT 3
- 第二十八题:实现数组的并、交、差、补集这四个方法 HOT 2
- 第二十九题:什么是链表? HOT 1
- 第三十题:两数相加
- 第三十一题:描述一下原型和原型链,以及之间的关系
- 第三十二题:什么是高阶函数? HOT 1
- 第三十三题:柯里化?
- 第三十四题:如何快速的适应新工作?
- 第三十五题:为什么不常用table和iframe这两个元素?
- 第三十六题:聊聊单元测试?
- 第三十七题:void 0 HOT 1
- 第三十八题:BEM 规范 HOT 1
- 第三十九题:Webpack的优缺点 HOT 1
- 第四十题:实现一个Promise HOT 1
- 第四十一题:TypeScript的优劣点 HOT 1
- 第四十二题:React 获取 ref 的方法都有哪些? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from daily.