⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

HTML template 模板元素

template标签:文档片段DocumentFragment、惰性渲染cloneNode、Web Components基础、与Vue template区别、slot插槽 · 难度:入门 · +10XP

HTML template 模板元素 —— 隐藏的HTML片段

做网页时经常需要重复生成相同的HTML结构——比如一个列表项、一张卡片、一行表格。<template> 标签就是用来存放这些模板的。它里面的内容不会显示在页面上,但可以随时用JS复制出来使用。

基本用法

<template id="cardTemplate">
  <div class="card">
    <h3 class="card-title"></h3>
    <p class="card-text"></p>
  </div>
</template>

<script> const template = document.getElementById('cardTemplate'); const clone = template.content.cloneNode(true); // 深拷贝模板内容 clone.querySelector('.card-title').textContent = '标题1'; clone.querySelector('.card-text').textContent = '这是第一张卡片的内容。'; document.body.appendChild(clone); </script>

关键步骤:获取模板 → cloneNode(true)深拷贝 → 修改内容 → 添加到页面。

template 的特性

特性说明
内容不渲染template 里的图片不会加载、脚本不会执行、CSS不生效
content 属性通过 template.content 访问内部的 DocumentFragment
可放在任意位置head、body 都可以
支持任何HTML可以包含 tr、td 等特殊元素(不像用div包裹tr会出错)

实战:动态生成商品列表

<template id="productTemplate">
  <tr>
    <td class="prod-name"></td>
    <td class="prod-price"></td>
  </tr>
</template>

<script> const products = [ {name: 'iPhone 15', price: '7999元'}, {name: 'MacBook Pro', price: '14999元'}, {name: 'AirPods Pro', price: '1999元'} ];

const template = document.getElementById('productTemplate'); products.forEach(product => { const clone = template.content.cloneNode(true); clone.querySelector('.prod-name').textContent = product.name; clone.querySelector('.prod-price').textContent = product.price; tbody.appendChild(clone); }); </script>

动手练习

  1. 基础练习:用 template 生成一个学生名单表格——姓名、年龄、班级三列,至少5个学生,全部由JS从template复制生成。
  2. 进阶应用:做一个待办事项列表——输入框+添加按钮,每次点击从template克隆一个新的任务行添加到列表,包含任务内容、完成状态复选框、删除按钮。
  3. 项目实战:做一个照片墙——用 template 定义卡片样式(图片+标题+描述),从 JS 数组读取数据批量生成卡片。要求卡片至少8张,用CSS Grid排列。

接下来学什么?

下一课学习 HTML 嵌入元素——object、embed、iframe 的区别和使用场景。

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 101 篇
0 完成
🔥 0