html 中shadow DOM 的使用

2023-11-03

什么是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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

html 中shadow DOM 的使用 的相关文章

  • javascript 中对象的“异步”循环

    通常 我们可以对数组和对象进行循环来迭代属性 值 但循环是阻塞的 但是 超时可用于模拟异步循环 我设法为数组做到了这一点 http jsfiddle net LHhy2 do stuff function asyncLoop i do st
  • 第一次使用node.js - “ReferenceError:节点未定义”

    我刚刚安装了node js 我尝试编写应该检查版本的node v 但它不起作用 这是输出 gt node v ReferenceError node is not defined at repl 1 2 at REPLServer self
  • Angular 2 Material 2 日期选择器日期格式

    我不知道如何更改材料2日期选择器的日期格式 我已阅读文档 但我不明白我实际上需要做什么 datepicker默认提供的输出日期格式为f e 6 9 2017 我想要实现的目标是将格式更改为类似的格式9 Jun 2017或任何其他 文档htt
  • ajaxStop() 不触发

    这是不起作用的代码 document ajaxStop function this unbind ajaxStop prevent running again when other calls finish Display everythi
  • 在 javascript、jQuery 或 css 中,如何让 div 或 iframe 展开以填充其余空间

    我有三个 iframe 我将顶部 iframe 设置为 50px 高度 将底部 iframe 设置为 50px 但我希望中间 iframe 扩展以填充其余空间 有没有一种技术可以用来对任何窗口屏幕尺寸执行此操作 谢谢 example
  • html 表格单元格的条件格式

    是否有现成的解决方案可以对 HTML 表格进行条件格式设置 通过条件格式 我更感兴趣的是根据该列或其他列 在同一个表中 的值 数字 将不同的颜色作为单元格背景 类似于我们在 Excel 条件格式 gt 色阶 gt 红黄绿中的内容 我想在通过
  • window.onbeforeunload 在 Android Chrome 上不会触发 [alt.解决方案?]

    我开发了一个简单的聊天应用程序 我正在使用 window onbeforeunload当有人关闭选项卡 浏览器时 基本上是当用户离开房间时 通知其他用户 这是我的代码 scope onExit function scope chatstat
  • 了解 sort() 比较函数

    我正在使用一个电子商务平台 该平台无法重新排序产品属性字段的选项 这真的很糟糕 因为要插入新选项 您几乎必须删除所有现有选项并重新开始 我正在尝试在客户端进行操作 这是我正在处理的内容 这是针对鞋码的 9 EE 9 1 2 EE 10 EE
  • javascript jquery 使用脚本更改脚本的src

    我有一个 JavaScript 脚本 它有一个 src 元素 这个 src 是一个 url 我想使用 javascript 更改它 一次更改为其他内容 或者动态创建它 使用 javascript jquery 动态创建脚本元素的最佳方法是什
  • 搜索深度嵌套数组以更新对象

    我有一个深层嵌套的数据结构 我有兴趣匹配数组 和数组数组 中的某个值 然后将一些数据推送到随附的数组中 例如以下是我的数组colors并伴随着的是更多颜色数组可能存在也可能不存在 var myData color green moreCol
  • 如何用javascript正确读取php cookies

    考虑这个 php 和 javascript 代码 然后我在控制台中看到的是 utma 111872281 291759993 1444771465 1445374822 1445436904 4 utmz 111872281 1444771
  • 判断一个数字是否能被 3 或 5 整除 (FizzBu​​zz)

    如何根据输出是否能被 3 或 5 整除来更改输出 如果它能被 3 整除 我想显示 rock 如果它能被 5 整除 我想显示 star 类似于 FizzBu zz 如果两者都有 他们都会看到 这是我的代码 if var n Math floo
  • 循环遍历元素并逐步为每个元素应用 CSS 规则

    我有一个网格布局 每个网格布局中都有不同数量的元素 我想动态添加内联grid column通过循环遍历 div 中存在的每个元素的 CSS 规则 ul 与一类 list 所以 HTML 代码的输出需要是 ul class list ul u
  • 在 React Navigation 中将 props 传递给自定义抽屉导航器

    在反应导航抽屉菜单中 我想显示用户名 John Doe 它处于我的主要组件的状态 Router 我怎样才能将自定义抽屉内容组件传递给它 额外信息 我从 AsyncStorage 中获取此名称 组件已挂载 这是我的代码 export defa
  • 在 Fabric.js 中按宽度/高度在另一个画布对象内居中和缩放画布对象

    Goal 将一个对象 水平和垂直 置于另一个对象 矩形或组 的中心canvas via Fabric js或者通过Javascript保持原始对象的长宽比相同 但也不超过父对象的宽度 高度比例 父对象 矩形或组 不会居中于canvas元素
  • 如何打开弹出窗口并用父窗口中的数据填充它?

    如何使用 JavaScript jQuery 使用父页面中 JS 变量的数据填充弹出窗口 在我的示例中 我有一个文件名数组 我在父窗口中最多列出五个 如果还有更多 我想提供一个链接来打开弹出窗口并列出数组中的每个帖子 因此 如果我打开一个包
  • 如何在 ASP.NET MVC 3 的 Razor 视图中编码嵌入的 javascript?

    如何在以下上下文中正确编码 JavaScript 我的 JSON 对象中的值是由应用程序管理员设置的 因此我假设它们需要正确编码 对于 HTML 和 JavaScript 都是如此 我在用着System Web Script Seriali
  • RoR - Rails 中的大文件上传

    我有一个 Rails Web 应用程序 允许用户上传视频 视频存储在 NFS 安装的目录中 当前的设置适用于较小的文件 但我也需要支持大文件上传 最多 4GB 当我尝试上传 4GB 文件时 它最终会发生 但从用户体验的角度来看很糟糕 上传开
  • IE 中的每个 JavaScript 支持?

    我有这个代码
  • Internet Explorer 9 是否会因数组和对象文字末尾的额外逗号而卡住?

    现代浏览器和 Node js 等环境允许您说 a 1 b 2 或 1 2 3 这在历史上一直是 Internet Explorer 的问题 Internet Explorer 9 中修复了此问题吗 对此有两种不同的答案 一种是对象初始值设定

随机推荐

  • xlwings删除数据_xlwings如何删除行和列?

    import xlwings as xw sht 2 2 delete 删除行 sht 1 2 delete 区域切片的方法 sht B B delete 删除列 sht 1 2 delete sht B2 delete 删除单元格 缺省默
  • 如何操作代码托管到GitHub

    先进入个人主界面 大概在页面右下角有个 New repository按钮 如上图 点击来创建一个版本库 这里将版本库命名为 你的项目名 我的是android项目 然后选择添加一个Android项目类型的 gitignore文件 并使用Apa
  • python设置excel表头_python xlsxwriter:添加表时将标头保留在Excel中

    I have a panda dataframe that I write to a xslx file and would like to add a table over that data I would also like to k
  • 【LeetCode刷题】136、只出现一次的数字 - java

    题目 给定一个非空整数数组 除了某个元素只出现一次以外 其余每个元素均出现两次 找出那个只出现了一次的元素 说明 你的算法应该具有线性时间复杂度 你可以不使用额外空间来实现吗 示例 方法 方法一 排序遍历法 先将其进行排序 因为重复的只可能
  • Linux命令操作:用sort和awk命令,进行复杂条件过滤

    原文 https www toutiao com i6968352645211963941 多 浩如烟海 参数之杂 多如繁星 需求引导 用到再学 以使用为目的 适当延伸 是一个最实际最有效的办法 某天 我突然想生成一个文件 记录 dev下的
  • 输入三个坐标,判断三角形,并输出面积和周长。

    include
  • MySQL的索引

    什么是索引 索引是一种特殊的文件 InnoDB数据表上的索引是表空间的一个组成部分 它们包含着对数据表里所有记录的引用指针 索引是一种数据结构 数据库索引 是数据库管理系统中一个排序的数据结构 以协助快速查询 更新数据库表中数据 索引的实现
  • shiro入门详解以及使用方法、shiro认证与shiro授权

    shiro介绍 什么是shiro shiro是Apache的一个开源框架 它将软件系统的安全认证相关的功能抽取出来 实现用户身份认证 权限授权 加密 会话管理等功能 组成了一个通用的安全认证框架 它可以实现如下的功能 1 验证用户 2 对用
  • 字符串的输入输出处理

    1391 字符串的输入输出处理 Time Limit 1 Sec Memory Limit 64 MBSubmit 333 Solved 71 Submit Status BBS Description 字符串的输入输出处理 Input 第
  • 线程安全的单例模式:饿汉模式&懒汉模式

    目录 一 单例模式 二 饿汉模式 1 特点 2 实现关键 3 代码实现 三 懒汉模式 1 特点 2 实现关键 3 代码实现 一 单例模式 单例模式 一种典型的设计模式 应用场景 一个类只能实例化一个对象 向外提供统一访问接口的场景 作用 对
  • C++基本使用--菱形继承(多继承)

    菱形继承 多继承 多继承 菱形继承 虚继承virtual 多继承 include
  • 犀牛高程点建地形gh插件电池组_Grasshopper快速生成地形

    简述 根据CAD高程点及高程信息在Grasshopper中快速生成地形模型 所需文件 CAD地形文件 所需软件 Rhino Grasshopper 插件 Human Weaverbird Meshtools Meshedit 可自行前往Fo
  • 计算机网络学习笔记:第四章

    计算机网络学习笔记 第四章 学习书籍 计算机网络 自顶向下方法 第四章 网络层 数据平面 其他章节请参阅 计算机网络 自顶向下方法 第一章 计算机网络和因特网 计算机网络 自顶向下方法 第二章 应用层 计算机网络 自顶向下方法 第三章 运输
  • 区块链技术加密算法为什么不可篡改

    区块链采用密码学的方法来保证已有数据不可能被篡改 这个是误解最多的部分 因为很多人一提到区块链就只觉得是这个 诚然 这部分很重要 而且确实区块链也因此得名 但这只是区块链的定义的一部分 这个部分的两个核心要点是 1 密码学哈希函数 2 非对
  • SpringBoot关键面试题

    什么是springboot 用来简化spring应用的初始搭建以及开发过程 使用特定的方式来进行配置 properties或yml文件 创建独立的spring引用程序 main方法运行 嵌入的Tomcat 无需部署war文件 简化maven
  • 如何使用 scp 将文件夹从远程复制到本地?

    问 如何使用 scp 将文件夹从远程复制到本地主机 我使用 ssh 登录到我的服务器 然后 我想将远程文件夹 foo 复制到本地 home user Desktop 我如何实现这一目标 答1 huntsbot com 高效赚钱 自由工作 s
  • Qt中关于emit和moc_*.cpp的自动生成

    关于Qt中的emit 函数 直接查看emit的定义 define emit 可以发现emit仅仅是个宏定义符号 编译器宏替换后就是个 空白 根本就不会编译它 所以代码里完全可以去掉这个符号 反之也可以在任何代码前加上这个符号 如这行代码em
  • C语言详解——枚举类型

    在程序中 可能需要为某些整数定义一个别名 我们可以利用预处理指令 define来完成这项工作 您的代码可能是 define MON 1 define TUE 2 define WED 3 define THU 4 define FRI 5
  • 说一下反三角函数atan等的角度计算值,弧度制和角度制

    我们平时在进行数学计算是 往往会用到三角函数和反三角函数 最常用的反三角函数大概就是atan了 因为这个相当于给定两点之间直线的夹角了 1 正切函数图像 这时正切函数图像 高中的我们就应该知道 正切函数是周期函数 即同一个值 有很多角度值对
  • html 中shadow DOM 的使用

    什么是shadow DOM An important aspect of web components is encapsulation being able to keep the markup structure style and b