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的更多相关文章
随机推荐
- Linux下启动Oracle服务和监听程序步骤
Linux下启动Oracle服务和监听程序启动和关闭步骤整理如下: 1.安装oracle: 2.创建oracle系统用户: 3./home/oracle下面的.bash_profile添加几个环境变量 ...
- 什么鬼,又不知道怎么命名class了
什么鬼,又不知道怎么命名class了 2015/10/25 · CSS · class 分享到:5 原文出处: 结一(@结一w3cplus) 相信写css的人都会遇到下面的问题: 糟糕,怎么命名 ...
- 「学习记录」《数值分析》第二章计算实习题(Python语言)
在假期利用Python完成了<数值分析>第二章的计算实习题,主要实现了牛顿插值法和三次样条插值,给出了自己的实现与调用Python包的实现--现在能搜到的基本上都是MATLAB版,或者是各 ...
- 小C的记事本(栈记录字符串)
链接:https://www.nowcoder.com/acm/contest/122/D来源:牛客网 题目描述 小C最近学会了java小程序的开发,他很开心,于是想做一个简单的记事本程序练练手. 他 ...
- Flink之状态之savepoint
1.总览 savepoints是外部存储的自包含的checkpoints,可以用来stop and resume,或者程序升级.savepoints利用checkpointing机制来创建流式作业的状 ...
- Thread.currentThread().getContextClassLoader().loadClass(className)和Class.forName(className)的区别
一.正文: 有去看开源框架的童鞋,应该会经常看到如下代码:Thread.currentThread().getContextClassLoader().loadClass(className),那这个 ...
- 框架开发中的junit单元测试
首先写一个测试用的公共类,如果要搭建测试环境,只要继承这个公共类就能很容易的实现单元测试,代码如下 import org.junit.runner.RunWith; import org.spring ...
- 大数据Hadoop-1
大数据Hadoop学习之搭建hadoop平台(2.2) 关于大数据,一看就懂,一懂就懵. 一.概述 本文介绍如何搭建hadoop分布式集群环境,前面文章已经介绍了如何搭建hadoop单机环境和伪分 ...
- 【bzoj2733】[HNOI2012]永无乡 Treap启发式合并
题目描述 永无乡包含 n 座岛,编号从 1 到 n,每座岛都有自己的独一无二的重要度,按照重要度可 以将这 n 座岛排名,名次用 1 到 n 来表示.某些岛之间由巨大的桥连接,通过桥可以从一个岛 到达 ...
- C#中的SubString()的用法
先看语法: String.SubString(int index,int length) index:开始位置,从0开始 length:你要取的子字符串的长度 例子: using ...