在Shadow DOM使用原生模板
原生模板的优势
- 延迟了资源加载
延迟了加载和处理模板所引用的资源的时机,这样,用户就能够在模板中使用任意多的资源,却不阻碍页面的渲染。
- 延迟了渲染内容
无论模板在什么位置,浏览器不会把模板中的内容直接渲染出来。开发者可以将模板放在页面中的任意位置,然后根据具体的情形选择模板去渲染,而不必切换模板的display属性,或者担心由于解析不需要的模板内容而带来的开销。
- 从DOM中隐藏内容
模板中的内容并不能视为DOM的一部分,当我们查询DOM节点时,绝对不会返回模板的节点。这样,模板就不会拖慢DOM节点的查询速度。模板终点内容在激活之前都可以视为隐藏的。
原生模板的用法
在<template>标签中编写模板,编写好的模板可以被插入到head body frameset等标签中,或者他们的任意后代标签中。
<head>
<template id="actq">
<p class="response"></p>
<script type="text/javascript">
(function() {
var p=confirm("tip?")
var responseEl = document.querySelector('.response')
if(p){
responseEl.innerHTML = 'success'
}
else{
responseEl.innerHTML = 'fail'
}
})();
</script>
</template>
</head>
<body>
<div id="atcq-root"></div>
</body>
使用模板时,将模板内容插入到DOM中即可。
首先获得对模板节点的引用
var template = document.querySelector("#atcq")
然后创建Shadow DOM,之后将模板中的内容填充到根元素中
var root = document.querySelector("#atcq-root").createShadowRoot()
root.appendChild(template.content)
Shadow DOM简介
shadow-dom 其实是浏览器的一种能力,它允许在浏览器渲染文档的时候向其中的 Dom 结构中插入一棵 DOM 元素子树,但是特殊的是,shadow DOM 子树并不在主 DOM树中。这颗子树形成了自己的『闭合空间』,比如shadow DOM子树可以包含与父文档中重复的ID和样式,而不会相冲突。
参考
在Shadow DOM使用原生模板的更多相关文章
- JS21. 使用原生JS封装一个公共的Alert插件(HTML5: Shadow Dom)
效果预览 Shadow DOM Web components 的一个重要属性是封装--可以将标记结构.样式和行为隐藏起来,并与页面上的其他代码相隔离,保证不同的部分不会混在一起,可使代码更加干净.整 ...
- 封印术:shadow dom
置顶文章:<纯CSS打造银色MacBook Air(完整版)> 上一篇:<鼠标滚动插件smoovejs和wowjs> 作者主页:myvin 博主QQ:851399101(点击Q ...
- 纯CSS菜单样式,及其Shadow DOM,Json接口 实现
先声明,要看懂这篇博客要求你具备少量基础CSS知识, 当然如果你只是要用的话就随便了,不用了解任何知识 完整项目github链接:https://github.com/git-Code-Shelf/M ...
- JavaScript 是如何工作:Shadow DOM 的内部结构 + 如何编写独立的组件!
这是专门探索 JavaScript 及其所构建的组件的系列文章的第 17 篇. 如果你错过了前面的章节,可以在这里找到它们: JavaScript 是如何工作的:引擎,运行时和调用堆栈的概述! Jav ...
- 【Web技术】401- 在 React 中使用 Shadow DOM
本文作者:houfeng 1. Shadow DOM 是什么 Shadow DOM 是什么?我们先来打开 Chrome 的 DevTool,并在 'Settings -> Preferences ...
- 【shadow dom入UI】web components思想如何应用于实际项目
回顾 经过昨天的优化处理([前端优化之拆分CSS]前端三剑客的分分合合),我们在UI一块做了几个关键动作: ① CSS入UI ② CSS作为组件的一个节点而存在,并且会被“格式化”,即选择器带id前缀 ...
- 使用shadow dom封装web组件
什么是shadow dom? 首先我们先来看看它长什么样子.在HTML5中,我们只用写如下简单的两行代码,就可以通过 <video> 标签来创建一个浏览器自带的视频播放器控件. <v ...
- 理解Shadow DOM(一)
1. 什么是Shadow DOM? Shadow DOM 如果按照英文翻译的话可以理解为 影子DOM, 何为影子DOM呢?可以理解为一般情况下使用肉眼看不到的DOM结构,那如果一般情况下看不到的话,那 ...
- webAssmebly实现js数组排序 使用custom elements和Shadow DOM自定义组件
直接上码了……………… .wat源码 (module (type $t0 (func (param i32 i32))) (type $t1 (func (result i32))) (type $t ...
随机推荐
- Linux命令:ldd
1.ldd不是一个可执行程序,而是一个shell脚本. zlf@ubuntu:~/$ which ldd /usr/bin/ldd zlf@ubuntu:~/$ file /usr/bin/ldd / ...
- 如何查看Linux系统下程序运行时使用的库?
Linux系统下程序运行会实时的用到相关动态库,某些场景下,比如需要裁剪不必要的动态库时,就需要查看哪些动态库被用到了. 以运行VLC为例. VLC开始运行后,首先查看vlc的PID,比如这次查到的V ...
- mac下停止和启动mysql命令
启动MySQL服务 sudo /usr/local/MYSQL/support-files/mysql.server start 停止MySQL服务 sudo /usr/local/mysql/s ...
- Two Sum(Medium)
1.遍历一次nums,利用map记录已经遍历过的nums[i],并记录其index :i+1 2.每次求出b=target-nums[i],检测b是否在map中,如果在,则已经得到答案,否则,把num ...
- python Ajax的使用
转自:http://www.cnblogs.com/python-study/p/6060530.html 1.使用Ajax在后台传递参数的示例 要使用Ajax传递参数,需要使用jquery,使用jq ...
- HDU-6672-Seq
题目传送门 ps:一般这种给一个数列求第n项,n还特别大的.要么矩阵快速幂,要么转化递推式.不过这题数据也特别多有100000组,所以就算矩阵快速幂可能也要超时,而且我还没推出来.转化递推式需要比较强 ...
- 使用jQuery在屏幕上居中一个DIV
文章目录 我如何去使用jQuery在屏幕的中心设置<div>? 我喜欢给jQuery添加函数,所以这个函数将有助于: jQuery.fn.center = function () { th ...
- LeetCode Day 6
LeetCode0006 将一个给定字符串根据给定的行数,以从上往下.从左到右进行 Z 字形排列. 比如输入字符串为 "LEETCODEISHIRING" ,指定行数为 3 时,排 ...
- STL中map的使用
知识点 C++中map提供的是一种键值对容器,里面的数据都是成对出现的.map内部自建一颗红黑树(一种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的. ...
- 吴裕雄--天生自然 R语言开发学习:功效分析(续一)
#----------------------------------------# # R in Action (2nd ed): Chapter 10 # # Power analysis # # ...