WebComponents001
Sample1: ShadowDom 隔离style,替换显示内容
<button>Hello, world!</button>
<script>
var host = document.querySelector('button');
var root = host.createShadowRoot();
root.innerHTML = '<style>div{background-color : blue;}</style> <div>Hi, you are great!</div>';
</script>
<style>
div {
background-color : green;
}
</style>
<div>Outside Element</div>
Sample 2: 通过Template给shadow Dom设置内容, 注意template中的script的作用域是全局的,style的作用域是shadow dom局部
<button>Hello, world!</button>
<div>Outside Element</div>
<template id="t1">
<style>div{background-color : blue;}</style>
<div>Hi, you are great!</div>
<script>
//此处脚本不会被执行
var d = document.querySelector('div');
d.onclick = function(){
alert("Hi");
}
</script>
</template>
<script>
var host = document.querySelector('button');
var root = host.createShadowRoot();
var t = document.querySelector("#t1");
//通过innerHTML给shadow dom赋值,不会执行template中的script
root.innerHTML = t.innerHTML;
</script>
<style>
div {
background-color : green;
}
</style>
Sample 3: 为template中的content嵌入子节点。子节点的style受外部css的直接控制,但是会继承shadow dom中父节点的style
<div id="hostNode"><div>Hello, world!</div></div>
<div>Outside Element</div>
<template id="t1">
<style>div{background-color : blue; font-size: 30px;}</style>
<div>Hi, you are great!</div>
<div>
<content></content>
</div>
</template>
<script>
var host = document.querySelector('#hostNode');
var root = host.createShadowRoot();
var t = document.querySelector("#t1");
var content = t.content;
root.appendChild(document.importNode(content,true));
</script>
<style>
div {
background-color : green;
font-size: 40px;
}
#mytext {
background-color : red;
}
</style>
sample 4:带有select的content
<div id="hostNode">
<div class="kk">Hello, kk world!</div>
<div class="hh">Hello, hh world!</div>
</div>
<div>Outside Element</div>
<template id="t1">
<style>div{background-color : blue; font-size: 30px;}</style>
<div>Hi, you are great!</div>
<div>
<content select=".hh"></content>
分割<br>
<content select=".kk"></content>
</div>
</template>
<script>
var host = document.querySelector('#hostNode');
var root = host.createShadowRoot();
var t = document.querySelector("#t1");
var content = t.content;
root.appendChild(document.importNode(content,true));
</script>
<style>
div {
background-color : green;
font-size: 40px;
}
#mytext {
background-color : red;
}
</style>
WebComponents001的更多相关文章
随机推荐
- P1189 SEARCH(逃跑的拉尔夫)
P1189 SEARCH 题目描述 年轻的拉尔夫开玩笑地从一个小镇上偷走了一辆车,但他没想到的是那辆车属于警察局,并且车上装有用于发射车子移动路线的装置. 那个装置太旧了,以至于只能发射关于那辆车的移 ...
- 网站的robots.txt文件
什么是robots.txt? robots.txt是一个纯文本文件,是爬虫抓取网站的时候要查看的第一个文件,一般位于网站的根目录下.robots.txt文件定义了爬虫在爬取该网站时存在的限制,哪些部分 ...
- 今天领导分享了一个探测端口的命令-linux下提示bash:command not found
今天领导分享了一个探测端口的命令,于是试了一下,提示未找到-bash: nc: command not found 因此决定将bash的命令在复习一下,温故而知新 总结整理于此: 确定你的DNS可以 ...
- L008之前课程实战模拟。
L008之前课程实战模拟. . 安装CentOS 6.5 X86_64 . 配置网络 . 用CRT连接服务器 . 更换源http://mirrors.163.com/.help/CentOS6-Bas ...
- Apache 服务器性能评估
1 查看当前并发连接数 netstat -an | grep ESTABLISHED | wc -l 2 查看当前进程数 ps aux|grep httpd|wc -l
- ES5新增数组方法(1):filter
检测数组元素,并返回符合条件所有元素的数组. 1.过滤数组中不符合条件的元素 let arr = [1, 2, 3, 4, 5, 6]; // 方式一 let newArr = arr.filter( ...
- python接口自动化: CAS系统验证,自动完成登录并获取token,遇到302请求重定向设置(requests模块 allow_redirects=False)即可
import requestsimport re import requests import re class Crm_token(object): try: username=int(input( ...
- jmeter无法启动的解决办法
jmeter下载地址: 链接: https://pan.baidu.com/s/15YhiPH-kNVxISEZ4Mxf_WA 提取码: 25sv jdk 8.0 下载地址: 链接: http ...
- 再见NullPointerException。在Kotlin里null的处理(KAD 19)
作者:Antonio Leiva 时间:Apr 4, 2017 原文链接:https://antonioleiva.com/nullity-kotlin/ 关于Kotlin最重要的部分之一:无效处理, ...
- CCF-NOIP-2018 提高组(复赛) 模拟试题(四)
T1 贪吃蛇 [问题描述] 贪吃蛇是一个好玩的游戏.在本题中,你需要对这个游戏进行模拟. 这个游戏在一个 \(n\) 行 \(m\) 列的二维棋盘上进行. 我们用 \((x, y)\) 来表示第 \( ...