- 导航标签页:点击不同的标签,切换显示不同的内容区域,比如浏览器设置页、代码编辑器等。
- 标签:为文章或内容添加关键词标签,方便分类和检索,JavaScript”、“前端”、“教程”。
- 输入框标签:用于描述输入框功能的文本,用户名”、“邮箱”。
下面我将分别详细介绍这几种“标签”的制作方法,从简单到复杂。

导航标签页
这是最常见的一种,通常由 HTML 结构、CSS 样式和 JavaScript 交互三部分组成。
使用原生 HTML、CSS 和 JavaScript(最经典)
这是理解其工作原理的最佳方式。
HTML 结构
我们需要一个容器来包裹所有内容,里面包含两部分:

- 列表对应一个内容区域。
- 内容区域列表区域都有一个唯一的 ID,与标签标题的
href属性对应。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">导航标签页示例</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<div class="tabs-container">
<!-- 标签标题 -->
<div class="tab-headers">
<button class="tab-header active" data-tab="tab1">首页</button>
<button class="tab-header" data-tab="tab2">产品</button>
<button class="tab-header" data-tab="tab3">关于我们</button>
</div>
<!-- 标签内容 -->
<div class="tab-content">
<div id="tab1" class="tab-pane active">
<h2>欢迎来到首页</h2>
<p>这里是首页的内容。</p>
</div>
<div id="tab2" class="tab-pane">
<h2>我们的产品</h2>
<p>这里是产品介绍的内容。</p>
</div>
<div id="tab3" class="tab-pane">
<h2>关于我们</h2>
<p>这里是关于我们的内容。</p>
</div>
</div>
</div>
<script src="script.js"></script>
</body>
</html>
CSS 样式
CSS 的作用是让标签看起来像标签,并控制内容的显示与隐藏。
/* style.css */
.tabs-container {
width: 500px;
margin: 50px auto;
font-family: sans-serif;
border: 1px solid #ccc;
border-radius: 5px;
overflow: hidden; /* 确保圆角生效 */
}
.tab-headers {
display: flex;
background-color: #f1f1f1;
}
.tab-header {
flex: 1; /* 让每个标签平均分配宽度 */
padding: 12px 20px;
background-color: inherit;
border: none;
outline: none;
cursor: pointer;
font-size: 16px;
transition: 0.3s;
}
/* 鼠标悬停效果 */
.tab-header:hover {
background-color: #ddd;
}
/* 当前激活的标签 */
.tab-header.active {
background-color: #fff;
border-bottom: 2px solid #007bff;
}
.tab-content {
padding: 20px;
}
.tab-pane {
display: none; /* 默认隐藏所有内容 */
}
/* 默认显示第一个内容 */
.tab-pane.active {
display: block;
}
JavaScript 交互
JS 负责监听点击事件,并切换 active 类。

// script.js
document.addEventListener('DOMContentLoaded', () => {
// 获取所有标签标题和内容区域
const tabHeaders = document.querySelectorAll('.tab-header');
const tabPanes = document.querySelectorAll('.tab-pane');
// 为每个标签标题添加点击事件
tabHeaders.forEach(header => {
header.addEventListener('click', () => {
// 1. 移除所有标题的 active 类
tabHeaders.forEach(h => h.classList.remove('active'));
// 2. 为当前点击的标题添加 active 类
header.classList.add('active');
// 3. 找到对应的内容区域(通过 data-tab 属性)
const targetId = header.getAttribute('data-tab');
const targetPane = document.getElementById(targetId);
// 4. 移除所有内容的 active 类
tabPanes.forEach(pane => pane.classList.remove('active'));
// 5. 为目标内容区域添加 active 类
targetPane.classList.add('active');
});
});
});
使用框架(如 Bootstrap)
现代前端框架提供了现成的组件,可以大大简化开发。
使用 Bootstrap
Bootstrap 的标签组件非常简单,只需要按照它的结构来写 HTML,并引入它的 CSS 和 JS 即可。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">Bootstrap 标签页示例</title>
<!-- 1. 引入 Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container mt-5">
<ul class="nav nav-tabs" id="myTab" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">首页</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile" type="button" role="tab" aria-controls="profile" aria-selected="false">产品</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="contact-tab" data-bs-toggle="tab" data-bs-target="#contact" type="button" role="tab" aria-controls="contact" aria-selected="false">关于我们</button>
</li>
</ul>
<div class="tab-content" id="myTabContent">
<div class="tab-pane fade show active" id="home" role="tabpanel" aria-labelledby="home-tab">
<h2>欢迎来到首页</h2>
<p>这里是首页的内容。</p>
</div>
<div class="tab-pane fade" id="profile" role="tabpanel" aria-labelledby="profile-tab">
<h2>我们的产品</h2>
<p>这里是产品介绍的内容。</p>
</div>
<div class="tab-pane fade" id="contact" role="tabpanel" aria-labelledby="contact-tab">
<h2>关于我们</h2>
<p>这里是关于我们的内容。</p>
</div>
</div>
</div>
<!-- 2. 引入 Bootstrap JS (Popper.js is required for Bootstrap) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
Bootstrap 通过 data-bs-toggle="tab" 和 data-bs-target 属性以及内部的 JS 自动处理了所有的交互逻辑,你只需要写好 HTML 结构即可。
标签
这种标签通常是静态的,或者由后端生成,前端负责渲染。
静态 HTML + CSS
直接在 HTML 中写好标签,用 CSS 美化。
HTML
<div class="article-tags">
<span class="tag">JavaScript</span>
<span class="tag">CSS</span>
<span class="tag">前端开发</span>
<span class="tag">教程</span>
</div>
CSS
.article-tags {
margin-top: 20px;
}
.tag {
display: inline-block;
padding: 5px 12px;
margin-right: 8px;
margin-bottom: 8px;
background-color: #e9ecef;
color: #495057;
border-radius: 15px; /* 圆角,形成胶囊状 */
font-size: 14px;
border: 1px solid #dee2e6;
}
.tag:hover {
background-color: #007bff;
color: white;
cursor: pointer;
}
动态渲染(例如使用 JavaScript 和数组)
如果标签是从数据库或 API 获取的,你需要用 JS 动态生成。
HTML
<div id="tags-container"></div>
JavaScript
const tags = ['JavaScript', 'CSS', '前端开发', '教程', '响应式设计'];
const container = document.getElementById('tags-container');
tags.forEach(tagText => {
// 创建标签元素
const tagElement = document.createElement('span');
tagElement.className = 'tag';
tagElement.textContent = tagText;
// 添加点击事件
tagElement.addEventListener('click', () => {
console.log(`你点击了标签: ${tagText}`);
// 这里可以添加点击后的逻辑,比如跳转到搜索页面
});
// 将标签添加到容器中
container.appendChild(tagElement);
});
这种方式更灵活,适合内容管理系统或动态网站。
输入框标签
这是最简单的标签,通常使用 HTML 的 HTML CSS (可选,用于美化) 为什么使用 对于初学者,强烈建议从第一种“导航标签页”的原生实现开始,它能让你深刻理解前端交互的基本原理,当你熟悉了之后,再使用框架来提高开发效率。<label>
<!-- 方式一:关联 input 的 id -->
<div class="form-group">
<label for="username">用户名</label>
<input type="text" id="username" name="username">
</div>
<!-- 方式二:直接包裹 input (更简洁) -->
<div class="form-group">
<label>
邮箱
<input type="email" name="email">
</label>
</div>
.form-group label {
display: block; /* 让标签独占一行 */
margin-bottom: 5px;
font-weight: bold;
}
.form-group input {
width: 100%;
padding: 8px;
box-sizing: border-box; /* 让 padding 不影响总宽度 */
}
<label>?
标签类型
核心技术
关键点
适用场景
导航标签页
HTML + CSS + JS / 框架
通过 JS 切换内容的显示/隐藏,常用
active 类选项卡、设置面板、多步骤表单
输入框标签
HTML
<label>关联
for 属性或包裹 input,提升可访问性表单设计
