⚡ 编程实验室🏗️ 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> 与 <slot>

学习使用<template>定义可复用内容,结合<slot>实现灵活的Web组件。 · 难度:入门 · +15XP

一、<template> 基础

<template>元素用于声明HTML片段,不会在页面加载时渲染,但可通过JavaScript克隆并插入到DOM中。

<template id="myCard">
  <div class="card">
    <h3>标题</h3>
    <p>描述文字</p>
  </div>
</template>

二、使用JavaScript复制模板

const template = document.getElementById('myCard');
const clone = template.content.cloneNode(true);
document.body.appendChild(clone);

三、自定义元素与<slot>

结合customElements.define<slot>可以创建可替换内容的组件:

元素作用
<slot>作为占位符,允许外部插入内容
slot属性指定内容插入到哪个slot
<template id="userCard">
  <div>
    <slot name="avatar">默认头像</slot>
    <slot name="name">默认名字</slot>
  </div>
</template>

<user-card> <img slot="avatar" src="user.png"> <span slot="name">张三</span> </user-card>

四、完整组件示例

class UserCard extends HTMLElement {
  constructor() {
    super();
    const template = document.getElementById('userCard');
    const shadow = this.attachShadow({ mode: 'open' });
    shadow.appendChild(template.content.cloneNode(true));
  }
}
customElements.define('user-card', UserCard);

练习提示:在starter_code中修改模板,添加一个<slot name="bio">用于显示用户简介,并在自定义元素中提供一段简介文字。

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

🏆 学习排行

加载中...

📊 统计

📖 101 篇
0 完成
🔥 0