首页 >web前端 >H5教程 >详解HTML5中的<template>标签_html5教程技巧

详解HTML5中的<template>标签_html5教程技巧

WBOY
WBOY原创
2016-05-16 15:51:563019浏览

一、HTML5 template元素初面

目前,我们在HTML中嵌入模板HTML,往往是类似这样的写法:

XML/HTML Code复制内容到剪贴板
  1. script type="text/template">  
  2. // ...   
  3. script>  

实际上,并不存在type="text/template"这样的标准写法,

以前,我们可能还使用过

看下下面四种嵌套图片HTML,同时图片内容不显示,不会有请求的写法:

XML/HTML Code复制内容到剪贴板
  1. script type="text/template">  
  2. img src="mm1.jpg">  
  3. script>  
  4.   
  5. textarea style="display: none;">  
  6. img src="mm1.jpg">  
  7. textarea>  
  8.   
  9. xmp style="display: none;">  
  10. img src="mm1.jpg">  
  11. xmp>  
  12.   
  13. template>  
  14. img src="mm1.jpg">  
  15. template>  

1. 标签内容隐藏性

    <script>本身的特定,让内部的HTML标签是按照字符串处理的,因此,天生内容不显示。但是,在DreamWeaver中,这种写法有个很大的问题,就是在script中书写模板HTML时候,标签自动闭合的永远是</script>这个很讨厌的。
   

2. 标签位置任意性
除了上面

3. childNodes无效性
虽然,肉眼看上去是

template.content会返回一个文档片段,你可以理解为另外一个document,然后,使用document下的一些查询API就可以获得

CSS Code复制内容到剪贴板
  1. var image_first = template.content.querySelector("img");  

三、HTML5 template元素终面

您可以狠狠地点击这里:HTML5 template模板元素体验demo

模板元素与CSS
如果浏览器有眼不识泰山,认为

如果浏览器与时俱进,则显示会是下面这样,自身CSS渲染,内部标签直接异空间不渲染,例如Chrome:
2015619175843048.png (545×598)

也就是说,虽然从CSS的角度看,

默认情况下,

window.getComputedStyle(template).display;    // 结果是"none"

2015619175903356.png (321×99)

因此,demo中才设置了如下的CSS声明:

CSS Code复制内容到剪贴板
  1. template { displayblock; ... }  

模板的克隆
如果你是在HTML字符串上处理,类似于现在流行的MVC框架或模板技术,则template.innerHTML足矣。然,

CSS Code复制内容到剪贴板
  1. var clone = document.importNode(template.content, true);  

然后,你就可以用append节点(appendChild)的方式,加载模板内容了,而不是(没得选择)append字符串加载模板内容。标题是“简介”,因此,不展开,也不放具体的实例了(若有兴趣,可参考文末的参考文章),大家知道有这么回事就好。
四、HTML5 template面试小结

至此,

临近最后,放上兼容性表,IE浏览器拖了好大的后腿,不过我表示很淡定,因为对IE早已麻木!

兼容性
2015619175925620.png (581×222)

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn