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的更多相关文章

随机推荐

  1. LeetCode:15. 3Sum(Medium)

    1. 原题链接 https://leetcode.com/problems/3sum/description/ 2. 题目要求 数组S = nums[n]包含n个整数,请问S中是否存在a,b,c三个整 ...

  2. awk用法介绍

    Awk 程序的结构如下: awk 'BEGIN{ print "start" } pattern { commands } END{ print "end" } ...

  3. 【jQuery】 Ajax

    [jQuery] Ajax $.ajax({ type: "Post", // 发包方式 cache: false, // 是否缓存 contentType: "appl ...

  4. 多个Target的使用

    背景介绍 开发过程中,我们会在内网搭建一个测试服务器,开发.测试都是在内网进行的.这样产生脏数据不会影响外网的服务器.外网服务器只有最后发布时才会进行一些必要的测试. 还有就是要对同一份代码生成不同的 ...

  5. NO3——BFS

    #include <stdio.h> #include <string.h> #include <queue> using namespace std; struc ...

  6. vector sort AND 友元

    # include<iostream> # include<string> # include<algorithm> # include<stdio.h> ...

  7. http长连接和短连接以及连接的本职

    HTTP长连接和短连接原理浅析 本文主要讲了,http长连接本质是tcp的长连接. 网络通信过程中,建立连接的本质是什么? 连接的本质 建立连接这个词,是从早期的电话系统中来的,那个时候,“建立连接” ...

  8. 编程练习:寻找发帖"水王"

    题目: 寻找发帖"水王" 来源: 编程之美 分析 衍生:就是给定一个数组,其中某个元素出现次数超过了数组长度的一半,找出这个元素 方法s 方法1 对这个串进行遍历,同时对出现的元素 ...

  9. 弹框中的elment-form在弹框重新打开后,怎么初始化验证信息

    如果弹框关闭前有错误提示,弹框重新打开,由于没重新刷新页面,该错误还是存在.... 解决办法:弹框中的内容写成一个组件,prop接收父元素弹框的状态,并监听且reset表格 1. cnpm insta ...

  10. WIN8 打开图片内置管理员无法激活此应用

    1.运行 gpedit.msc 2.计算机配置.windows设置.安全设置.本地策略.安全选项.“用户账户控制用于内置管理员账户的管理员批准模式”  改为已启用 3.重启电脑