<template> 标签

<template> 元素,用于描述一个标准的以 DOM 为基础的方案来实现客户端模板。该模板允许你定义一段可以被转为 HTML 的标记,在页面加载时不生效,但可以在后续进行动态实例化。( 它们是用来放置一大团 HTML 的地方,就是那些你不想让浏览器弄乱的标记...不管它是出于什么理由。)

特性检测

function supportsTemplate() {

return ‘content‘ in document.createElement(‘template‘);

}

if (supportsTemplate()) {

// 检测通过!

} else {

// 使用旧的模板技术或库。

}

声明模板

<template id="mytemplate">

<img src="" alt="great image">

<div class="comment"></div>

</template>

那个空图片。这是故意留空的。因为页面加载时不会请求图片,因此就不会产生 404 或控制台错误。我们可以随后动态生成图片的 URL。

用 <template> 来包裹内容为我们提供了几个重要特性

1  它的内容在激活之前一直处于惰性状态。本质上,这些标记就是隐藏的 DOM,它们不会被渲染。

2  处于模板中的内容不会有副作用。脚本不会运行,图片不会加载,音频不会播放,...直到模板被使用。

3  内容不在文档中。在主页面使用 document.getElementById() 或 querySelector() 不会返回模板的子节点。

4  模板能够被放置在任何位置,包括 <head>,<body>,或 <frameset>,并且任何能够出现在以上元素中的内容都可以放到模板中。 注意,"任何位置"意味着 <template> 能够安全的出现在 HTML 解析器不允许出现的位置...几乎可以作为任何内容模型的子节点。 它也可以作为 <table> 或 <select> 的子元素:

<table>

<tr>

<template id="cells-to-repeat">

<td>some content</td>

</template>

</tr>

</table>

激活一个模板

要使用模板,你得先激活它。否则它的内容将永远无法渲染。 激活模板最简单的方法就是使用 document.importNode() 对模板的 .content 进行深拷贝。 .content 为只读属性,关联一个包含模板内容的 DocumentFragment。

var t = document.querySelector(‘#mytemplate‘);

// 在运行时填充 src。

t.content.querySelector(‘img‘).src = ‘logo.png‘;

var clone = document.importNode(t.content, true);

document.body.appendChild(clone);

在对模板进行冲压(stamping out)后,它的内容开始"启用"。 在本例中,内容被拷贝,发出图片请求,最终的标记得以渲染。

http://www.html5rocks.com/zh/tutorials/webcomponents/template/

时间: 2024-08-08 05:35:56

<template> 标签的相关文章

Django url 标签和reverse()函数的使用(转)

原文:http://www.yihaomen.com/article/python/355.htm 使用url标签和reverse()函数,可以避免在模板和view中对url进行硬编码,这样即使url改变了,对模板和view也没有影响 起初用django 开发应用的时候,完全是在urls.py 中硬编码配置地址,在views.py中HttpResponseRedirect()也是硬编码转向地址,当然在template 中也是一样了,这样带来一个问题,如果在urls.py 中修改了某个页面的地址,

HTML5新增Canvas标签及对应属性、API详解(基础一)

知识说明: HTML5新增的canvas标签,通过创建画布,在画布上创建任何想要的形状,下面将canvas的API以及属性做一个整理,并且附上时钟的示例,便于后期复习学习!Fighting! 一.标签原型 <canvas width=”1000” height=”1000” id=”myCanvas”> 您的浏览器版本过低,不支持HTML5新增的canvas标签. </canvas> 使用js获取该画布,并指定对象 <script> Var canvasID = doc

HTML5之标签(二)

标签 描述 <!--...--> 定义html注释. <!DOCTYPE> 定义文档类型. <a> 定义锚和超链接. <abbr> 定义缩写. <address> 定义文档作者或拥有者的联系信息. <area> 定义图像映射内部的区域. <article> 定义文章. <aside> 定义页面内容之外的内容. <audio> 定义声音(音频)内容. <b> 定义粗体字. <bloc

HTML5之标签(一)

HTML标签分为块级元素和行内元素. 行内元素和块级元素区别 1.块级元素会独占一行,其宽度自动填满其父元素宽度:行内元素不会独占一行,相邻的行内元素会排列在同一行里,直到一行排不下,才会换行,其宽度随元素的内容变化而变化 2. 块级元素可以设置 width, height属性:行内元素设置width,  height无效 3. 块级元素可以设置margin 和 padding:行内元素的margin 和 padding在水平方向有效,竖直方向无效 4.行内元素和块级元素转换,通过设置CSS的d

第2天:HTML常用标签

今天学完主要对所学知识点进行了整理. 一.超链接ahref:www.baidu.com(跳转页面):id名(锚点跳到相应div位置):01.rar(压缩包) target:_blank(新窗口打开):_self(当前窗口打开)二.文件路径绝对路径:(1)线上:线上绝对路径(2)线下:完整路径 相对路径:src=../img/bg.jpg(../是上一级目录) 三.HTML常用标签section :版块 用于划分页面上的不同区域,或者划分文章里不同的节 header :页面头部或者版块(secti

frameset标签设计页面

重要事项:不能将 <frameset></frameset> 标签放在<body></body> 标签里.且 HTML5 已经不支持 frameset 标签的使用!!! 1.frameset 元素可定义一个框架集,它被用来组织多个窗口(框架).每个框架存有独立的文档.配合<frame></frame>框架的使用,我们可以对页面进行分割,局部刷新.合理的使用会给用户带来非常好的体验效果. 2.frameset 的几个属性: ①.cols

使用原生JavaScript实现对select增加option标签并附加value属性

好久没有写原生的东西了,今天写了一个小项目里面包含着option选项,所以我决定使用原生JavaScript动态生成, 本着互联网分享精神,我将本篇文章分享给大家. html代码(就是一个select) <select name="" id="reg-select"></select> json数据 var json = [ { "cc": "86", "code": "C

&lt;table&gt;标签总结(colspan跨列 ,rowspan跨行)

table标签有些内置属性要设置: <table cellpadding="0" cellspacing="0" border="0" summary="各银行的网上银行支付限额总表"> 1.摘要summary的内容是不会在浏览器中显示出来的.它的作用是增加表格的可读性(语义化), 使搜索引擎更好的读懂表格内容,还可以使屏幕阅读器更好的帮助特殊用户读取表格内容. 2.

java的基础标签

跨行业进入IT,感觉就像学习一门外语,基础标签就像英语中的单词是的,现在只会一个个单词,不会说话的感觉,痛苦呀. 1.文本格式控制标签 <font color="文本颜色" size="字体大小" face="什么字体">文本内容</font> <b></b>   字体加粗 <i></i>     字体倾斜  <em></em>强调,语气加强用 <

phpcms ——模板标签详细使用说明

使用phpcms总是要查询各种标签,实在很烦,只好找个比较全的来备查.因为自己写一个orm来配合调用也没那么容易无缝的嵌入到引擎当中. 获取父分类下面的子分类 {loop subcat(77) $k $v}{php $subcatid[] = $k;}{/loop}<?php $subcatid = implode(',', $subcatid);?>  结果可以用在sql 的in子句中 {template "content","header"} 调用根