|
1 |
| -template.md |
| 1 | +HTML \<template> Tag |
2 | 2 | ===
|
3 | 3 |
|
4 |
| -欢迎您编辑 <a target="__blank" href="https://github.com/jaywcjlove/html-tutorial/blob/main/docs/tags/template.md">docs/tags/template.md</a> 文件,共建 HTML Tutorial 文档。 |
| 4 | +## 示例 |
| 5 | + |
| 6 | +使用 \<template> 保存一些在页面加载时将被隐藏的内容。 使用 JavaScript 显示它: |
| 7 | + |
| 8 | +```html idoc:preview:iframe |
| 9 | +<button onclick="showContent()">Show hidden content</button> |
| 10 | +<template> |
| 11 | + <h2>Flower</h2> |
| 12 | + <img src="../assets/example.png" width="214"> |
| 13 | +</template> |
| 14 | +<script> |
| 15 | + function showContent() { |
| 16 | + var temp = document.getElementsByTagName("template")[0]; |
| 17 | + var clon = temp.content.cloneNode(true); |
| 18 | + document.body.appendChild(clon); |
| 19 | + } |
| 20 | +</script> |
| 21 | +``` |
| 22 | + |
| 23 | +## 定义和用法 |
| 24 | + |
| 25 | +`<template>` 标签用作一个容器,用于在页面加载时保存一些对用户隐藏的 HTML 内容。 |
| 26 | + |
| 27 | +`<template>` 中的内容可以稍后使用 JavaScript 渲染。 |
| 28 | + |
| 29 | +如果您有一些 HTML 代码要反复使用,则可以使用 `<template>` 标记,但在您要求之前不要使用。 要做到这一点*没有* `<template>` 标记,您必须使用 JavaScript 创建 HTML 代码,以防止浏览器呈现代码。 |
| 30 | + |
| 31 | +## 浏览器支持 |
| 32 | + |
| 33 | +| Element | ![chrome][1] | ![edge][2] | ![firefox][3] | ![safari][4] | ![opera][5] | |
| 34 | +| ------- | --- | --- | --- | --- | --- | |
| 35 | +| \<template> | 26.0 | 13.0 | 22.0 | 8.0 | 15.0 | |
| 36 | + |
| 37 | +## 全局属性 |
| 38 | + |
| 39 | +`<template>` 标签支持 HTML 中的[全局属性](../reference/standardattributes.md)。 |
| 40 | + |
| 41 | +## 更多示例 |
| 42 | + |
| 43 | +用一个新的 div 元素为数组中的每个项目填充网页。 每个 div 元素的 HTML 代码都在模板元素内: |
| 44 | + |
| 45 | +```html idoc:preview:iframe |
| 46 | +<button onclick="showContent()">Show hidden content</button> |
| 47 | +<template> |
| 48 | + <div class="myClass">I like: </div> |
| 49 | +</template> |
| 50 | +<script> |
| 51 | + var myArr = ["Audi", "BMW", "Ford", "Honda", "Jaguar", "Nissan"]; |
| 52 | + function showContent() { |
| 53 | + var temp, item, a, i; |
| 54 | + temp = document.getElementsByTagName("template")[0]; |
| 55 | + item = temp.content.querySelector("div"); |
| 56 | + for (i = 0; i < myArr.length; i++) { |
| 57 | + a = document.importNode(item, true); |
| 58 | + a.textContent += myArr[i]; |
| 59 | + document.body.appendChild(a); |
| 60 | + } |
| 61 | + } |
| 62 | +</script> |
| 63 | +``` |
| 64 | +<!--rehype:style=height: 130px;--> |
| 65 | + |
| 66 | +检查浏览器对 \<template> 的支持: |
| 67 | + |
| 68 | +```html idoc:preview:iframe |
| 69 | +<script> |
| 70 | +if (document.createElement("template").content) { |
| 71 | + document.write("Your browser supports template!"); |
| 72 | +} else { |
| 73 | + document.write("Your browser does not supports template!"); |
| 74 | +} |
| 75 | +</script> |
| 76 | +``` |
| 77 | + |
| 78 | +[1]: ../assets/chrome.svg |
| 79 | +[2]: ../assets/edge.svg |
| 80 | +[3]: ../assets/firefox.svg |
| 81 | +[4]: ../assets/safari.svg |
| 82 | +[5]: ../assets/opera.svg |
0 commit comments