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的更多相关文章
随机推荐
- ubuntu 关闭触控板
第一种: 1 sudo rmmod psmouse 这个是禁用的 2 sudo modprobe psmouse 这个是启用的 这个方法很便捷,但是会将触点和触板都禁用了,一般还是希望保持触点是 ...
- mysql 5.7.19 zip版本 windows安装步骤
请注意此文档用于msyql5.7系列及以后版本(包括最新 mysql 8.0.11)zip版本windows下的安装1.下载mysql省略2.解压mysql到D:\Program Files\mysq ...
- 复制MySQL数据库A到另外一个MySQL数据库B(仅仅针对innodb数据库引擎)
方案一:(不用太大的变化my.ini文件) copy 原数据库A中的 数据库(database) ib_logfile1 ib_logfile0 ibdata1: 关闭目的数据库B: 备份 ...
- win10 java环境变量配置
首先,你应该已经安装了 Java 的 JDK 了(如果没有安装JDK,请跳转到此网址:http://www.oracle.com/technetwork/java/javase/downloads/i ...
- win10子系统Ubuntu18.04下安装图形界面
前提:windows 10 已经安装WSL(windows subsystem for linux),并能正确运行Bash. 要想使用Linux的图形用户界面通常有两种方法,一种是使用X-Window ...
- Windows下nginx作为静态资源服务器使用
一.Nginx下载与安装 1.nginx官方下载地址:http://nginx.org/ 2.下载完后将压缩包解压即可 3.nginx配置文件为根目录下conf\nginx.conf 二.Nginx常 ...
- 使用IDEA快速搭建Gradle项目
- [转载]压力测试工具siege的用法
压力测试工具siege 原文:http://blog.csdn.net/qingye2008/article/details/34500949 Siege是Linux下的一个web系统的压力测试工具, ...
- Java中大数的使用与Java入门(NCPC-Intergalactic Bidding)
引入 前几天参加湖南多校的比赛,其中有这样一道题,需要使用高精度,同时需要排序,如果用c++实现的话,重载运算符很麻烦,于是直接学习了一发怎样用Java写大数,同时也算是学习Java基本常识了 题目 ...
- CE-HTML简介
1.典型的CE-HTML代码如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html ...