什么是shadow DOM?

An important aspect of web components is encapsulation — being able to keep the markup structure, style, and behavior hidden and separate from other code on the page so that different parts do not clash, and the code can be kept nice and clean. The Shadow DOM API is a key part of this, providing a way to attach a hidden separated DOM to an element. This article covers the basics of using the Shadow DOM.

下面这个是shadow DOM 的使用例子:

html:

<!DOCTYPE html>
<html>
<head><meta charset="utf-8"><title>shadowDOM</title><style type="text/css">#div {width: 300px;height: 50px;border: 1px solid #666;padding: 15px;}</style>
</head>
<body><div id="div">这里是不显示出来的</div><button>点我点我</button>
</body>
</html>

  javascript:

function createShadowDOM(elem) {var root = elem.createShadowRoot();root.appendChild(createStyle());root.appendChild(createInputDiv("姓名","name"));
}function createStyle() {var style = document.createElement('style');style.textContent = 'div.input-div { height: 30px; width: 250px; }' +'font.input-font { line-height: 30px;font-size: 16px;color: #495A80; margin-right: 10px;}'+'span.input-area {width: 200px;height: 25px;line-height: 25px;padding-left: 5px;display:inline-block;color: #666;font-size: 16px;border: 1px solid #999;border-radius: 3px;}';return style;
}function createInputDiv(font, name) {var inputDiv = document.createElement('div');inputDiv.className = 'input-div';inputDiv.innerHTML = "<font class='input-font'>" + font + "</font><span class='input-area' contentEditable='true' id=" + name + "></span>";return inputDiv;
}createShadowDOM(document.querySelector("#div"));document.querySelector('button').addEventListener('click', function() {console.log(document.querySelector('#div').shadowRoot.querySelector('#name').innerHTML);
})

  结果:

This article assumes you are already familiar with the concept of the DOM (Document Object Model) — a tree-like structure of connected nodes that represents the different elements and strings of text appearing in a markup document (usually an HTML document in the case of web documents). As an example, consider the following HTML fragment:

两个其前端前沿网站:

js代码在线编辑:https://jsbin.com/?html,output

兼容性查询:https://caniuse.com/

----------------------------------------------------------------------------------------------------------

参考: https://developer.mozilla.org/en-US/docs/Web/Web_Components/Using_shadow_DOM

https://blog.csdn.net/qq_31280709/article/details/75577439

转载于:https://www.cnblogs.com/oxspirt/p/9816467.html

html 中shadow DOM 的使用相关推荐

  1. Shadow DOM系列1-简介

    为什么80%的码农都做不了架构师?>>>    英文链接:Shadow DOM: Introduction, 26 AUGUST 2013 on Web Components, Sh ...

  2. 理解Shadow DOM

    1. 什么是Shadow DOM? Shadow DOM 如果按照英文翻译的话可以理解为 影子DOM, 何为影子DOM呢?可以理解为一般情况下使用肉眼看不到的DOM结构,那如果一般情况下看不到的话,那 ...

  3. [译] 用 Shadow DOM v1 和 Custom Elements v1 实现一个原生 Web Component

    原文地址:Make a Native Web Component with Custom Elements v1 and Shadow DOM v1 原文作者:Pearl Latteier 译文出自: ...

  4. Shadow DOM及自定义标签

    参考链接:点我 一.什么是Shadow DOM Shadow DOM,直接翻译的话就是 影子 DOM,可以理解为潜藏在 DOM 结构中并且我们无法直接控制操纵的 DOM 结构.类似于下面这种结构 Sh ...

  5. [html] 举例说明Shadow DOM的应用场景有哪些?

    [html] 举例说明Shadow DOM的应用场景有哪些? 可以将 shadow DOM 视为"DOM中的DOM".它是自己独立的DOM树,具有自己的元素和样式,与原始DOM完全 ...

  6. Shadow DOM的理解

    Shadow DOM的理解 Shadow DOM是HTML的一个规范,其允许在文档document渲染时插入一颗DOM元素子树,但是这棵子树不在主DOM树中,Shadow DOM如果按照英文翻译的话可 ...

  7. 纯CSS菜单样式,及其Shadow DOM,Json接口 实现

    先声明,要看懂这篇博客要求你具备少量基础CSS知识, 当然如果你只是要用的话就随便了,不用了解任何知识 先放一张效果图         Part 1:纯CSS菜单样式 先放样式代码 1 <sty ...

  8. Chrome 53 支持 Shadow DOM 等规范

    上周发布的 Chrome 53 带来了一系列实验性规范的支持,如Shadow DOM,它为复杂网页的开发提供便利.同时,针对移动平台,Chrome 53也提供了PaymentRequest接口.自定义 ...

  9. Chrome 53 支持Shadow DOM、PaymentRequest等规范

    上周发布的 Chrome 53 带来了一系列实验性规范的支持,如Shadow DOM,它为复杂网页的开发提供便利.同时,针对移动平台,Chrome 53也提供了PaymentRequest接口.自定义 ...

  10. Shadow DOM 样式隔离 js沙箱

    这种方法可能适用于中台这种嵌套其他子应用的场景,目前没遇到其他使用场景或有更好的解决方案 在线demo 不管是link导入的样色还是<style>标签样色都可以被隔离,不影响shadow ...

最新文章

  1. 【ACM】杭电OJ 2024
  2. Structure-from-Motion Revisited
  3. Linux下添加新硬盘,分区及挂载
  4. Android:在安卓中使用TFLite模型
  5. vue对象拼接_vue 俩个数组对象合并成一个
  6. windows下c 用mysql数据库_Windows环境下C/C++访问PostgreSQL数据库
  7. QQ超市模拟排配2D版 1.08 (XNA4.0)
  8. 学深圳,垃圾随桶运走最好
  9. 简述WebS简述WebService与.NET Remoting的区别及适应场合
  10. 中国环境检测市场运营现状分析与投资规划研究报告2022年版
  11. Oracle 增加USERS表空间
  12. 网约护士来了?相关App不合规 两大安全问题最受关注
  13. HM16.7量化部分学习记录
  14. javaweb-day03-7(基础加强-泛型)
  15. Centos安装google浏览器01
  16. 批处理 rewriteBatchedStatements=true
  17. 【工具介绍】fastcopy的下载与使用方法,可用于硬盘对拷
  18. Python练手项目:PDF小工具
  19. SAP PP模块生产版本主数据维护
  20. 我对现代人爱情的几点看法!

热门文章

  1. 山西好点的计算机专科学校排名及分数线,2019-2020山西专科学校排名及分数线(理科+文科)...
  2. C语言的全局变量和局部变量的作用域
  3. nyoj20吝啬得过度(DFS)
  4. linux系统调用的使用例子,Linux增加系统调用步骤和实例
  5. 细数继承与派生(纯干货推荐)1.0
  6. 信贷违约风险预测(三)简单的特征工程
  7. 容器技术Docker K8s 7 容器服务ACK集群
  8. iOS 13问题记录
  9. ubuntu mysql 连接数_ubuntu-阿里云下 Tomcat 应用无法连接数Mysql据库
  10. java lambda有必要_深度分析:java8的新特性lambda和stream流,看完你学会了吗?