HTML <template> 标签

HTML 内容模板(<template>)元素是一种用于保存客户端内容机制,该内容在加载页面时不会显示,但随后可以用Javascript 方法将其展示出来。将其视为一个可存储在文档中以便后续使用的内容。虽然解析器在加载页面时确实会读取<template>元素的内容,元素内容不会被渲染,只为后续使用。


实例

使用 <template> 保留页面加载时隐藏的内容。使用 JavaScript 来显示:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>template 元素</h1>
  5. <p>单击下面的按钮以显示模板元素中的隐藏内容。</p>
  6. <button onclick="showContent()">显示隐藏内容</button>
  7. <template>
  8. <h2>Flower</h2>
  9. <img src="/images/img_white_flower.jpg" width="214" height="204">
  10. </template>
  11. <script>
  12. function showContent() {
  13. var temp = document.getElementsByTagName("template")[0];
  14. var clon = temp.content.cloneNode(true);
  15. document.body.appendChild(clon);
  16. }
  17. </script>
  18. </body>
  19. </html>

定义和用法

<template> 标记用作容纳页面加载时对用户隐藏的 HTML 内容的容器。

<template> 中的内容可以使用 JavaScript 呈现。

如果您有一些需要重复使用的 HTML 代码,则可以使用 <template> 标记。如果在没有 <template> 标记的情况下执行此操作,必须使用 JavaScript 创建 HTML 代码,以防止浏览器显示这些代码。


浏览器支持

元素
<template>26.013.022.08.015.0

全局属性

<template> 标签同时支持 HTML 中的 全局属性


更多实例

实例

对数组中的每个项,都使用一个新的 div 元素来填充网页。每个 div 元素的 HTML 代码都在 template 元素内:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <style>
  5. .myClass {
  6. color: white;
  7. background-color: DodgerBlue;
  8. padding: 20px;
  9. text-align: center;
  10. margin: 10px;
  11. }
  12. </style>
  13. <h1>template 元素</h1>
  14. <p>本例使用包含数组中每个项目的新 div 元素来填充网页。</p>
  15. <p>每个 div 的 HTML 代码在 template 元素内。</p>
  16. <p>单击下面的按钮,显示 template 元素中的隐藏内容。</p>
  17. <button onclick="showContent()">显示隐藏的内容</button>
  18. <template>
  19. <div class="myClass">我喜欢:</div>
  20. </template>
  21. <script>
  22. var myArr = ["奥迪", "宝马", "奔驰", "大众", "捷豹", "沃尔沃"];
  23. function showContent() {
  24. var temp, item, a, i;
  25. temp = document.getElementsByTagName("template")[0];
  26. //get the div element from the template:
  27. item = temp.content.querySelector("div");
  28. //for each item in the array:
  29. for (i = 0; i < myArr.length; i++) {
  30. //Create a new node, based on the template:
  31. a = document.importNode(item, true);
  32. //Add data from the array:
  33. a.textContent += myArr[i];
  34. //append the new node wherever you like:
  35. document.body.appendChild(a);
  36. }
  37. }
  38. </script>
  39. </body>
  40. </html>
实例

检查浏览器是否支持 <template> 标签:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h1>template 元素</h1>
  5. <script>
  6. if (document.createElement("template").content) {
  7. document.write("您的浏览器支持 template!");
  8. } else {
  9. document.write("您的浏览器不支持 template!");
  10. }
  11. </script>
  12. </body>
  13. </html>