Bootstrap 徽章
概述
Bootstrap 徽章(Badges)是小型的计数和标签组件,用于显示数字、状态或其他简短信息。它们通常用于显示未读消息数量、状态标识或分类标签。
基本徽章
使用 .badge 类创建基本徽章:
html
<h1>示例标题 <span class="badge bg-secondary">新</span></h1>
<h2>示例标题 <span class="badge bg-secondary">新</span></h2>
<h3>示例标题 <span class="badge bg-secondary">新</span></h3>
<h4>示例标题 <span class="badge bg-secondary">新</span></h4>
<h5>示例标题 <span class="badge bg-secondary">新</span></h5>
<h6>示例标题 <span class="badge bg-secondary">新</span></h6>徽章颜色
徽章支持所有的上下文颜色:
html
<span class="badge bg-primary">Primary</span>
<span class="badge bg-secondary">Secondary</span>
<span class="badge bg-success">Success</span>
<span class="badge bg-danger">Danger</span>
<span class="badge bg-warning text-dark">Warning</span>
<span class="badge bg-info text-dark">Info</span>
<span class="badge bg-light text-dark">Light</span>
<span class="badge bg-dark">Dark</span>药丸徽章
使用 .rounded-pill 类创建更圆润的徽章:
html
<span class="badge rounded-pill bg-primary">Primary</span>
<span class="badge rounded-pill bg-secondary">Secondary</span>
<span class="badge rounded-pill bg-success">Success</span>
<span class="badge rounded-pill bg-danger">Danger</span>
<span class="badge rounded-pill bg-warning text-dark">Warning</span>
<span class="badge rounded-pill bg-info text-dark">Info</span>
<span class="badge rounded-pill bg-light text-dark">Light</span>
<span class="badge rounded-pill bg-dark">Dark</span>按钮中的徽章
徽章可以用作按钮的一部分,提供计数器:
html
<button type="button" class="btn btn-primary">
通知 <span class="badge bg-secondary">4</span>
</button>
<button type="button" class="btn btn-primary">
消息 <span class="badge bg-light text-dark">9</span>
</button>
<button type="button" class="btn btn-outline-secondary">
购物车 <span class="badge bg-danger">2</span>
</button>定位徽章
使用定位工具类将徽章定位在其他元素的角落:
html
<button type="button" class="btn btn-primary position-relative">
收件箱
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
99+
<span class="visually-hidden">未读消息</span>
</span>
</button>
<button type="button" class="btn btn-primary position-relative">
个人资料
<span class="position-absolute top-0 start-100 translate-middle p-2 bg-danger border border-light rounded-circle">
<span class="visually-hidden">新通知</span>
</span>
</button>实际示例
html
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap 徽章示例</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<div class="container my-5">
<h1>Bootstrap 徽章示例</h1>
<!-- 基本徽章 -->
<h2>基本徽章</h2>
<div class="mb-4">
<h3>产品列表 <span class="badge bg-primary">12</span></h3>
<h4>待处理订单 <span class="badge bg-warning text-dark">5</span></h4>
<h5>新消息 <span class="badge bg-danger">3</span></h5>
</div>
<!-- 不同颜色的徽章 -->
<h2>不同颜色的徽章</h2>
<div class="mb-4">
<span class="badge bg-primary me-2">主要</span>
<span class="badge bg-secondary me-2">次要</span>
<span class="badge bg-success me-2">成功</span>
<span class="badge bg-danger me-2">危险</span>
<span class="badge bg-warning text-dark me-2">警告</span>
<span class="badge bg-info text-dark me-2">信息</span>
<span class="badge bg-light text-dark me-2">浅色</span>
<span class="badge bg-dark">深色</span>
</div>
<!-- 药丸徽章 -->
<h2>药丸徽章</h2>
<div class="mb-4">
<span class="badge rounded-pill bg-primary me-2">主要</span>
<span class="badge rounded-pill bg-secondary me-2">次要</span>
<span class="badge rounded-pill bg-success me-2">成功</span>
<span class="badge rounded-pill bg-danger me-2">危险</span>
<span class="badge rounded-pill bg-warning text-dark me-2">警告</span>
<span class="badge rounded-pill bg-info text-dark me-2">信息</span>
<span class="badge rounded-pill bg-light text-dark me-2">浅色</span>
<span class="badge rounded-pill bg-dark">深色</span>
</div>
<!-- 按钮中的徽章 -->
<h2>按钮中的徽章</h2>
<div class="mb-4">
<button type="button" class="btn btn-primary me-2">
邮件 <span class="badge bg-light text-dark">12</span>
</button>
<button type="button" class="btn btn-success me-2">
通知 <span class="badge bg-light text-dark">3</span>
</button>
<button type="button" class="btn btn-outline-secondary me-2">
购物车 <span class="badge bg-danger">5</span>
</button>
<button type="button" class="btn btn-info">
下载 <span class="badge bg-light text-dark">99+</span>
</button>
</div>
<!-- 定位徽章 -->
<h2>定位徽章</h2>
<div class="mb-4">
<button type="button" class="btn btn-primary position-relative me-3">
收件箱
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
99+
<span class="visually-hidden">未读消息</span>
</span>
</button>
<button type="button" class="btn btn-secondary position-relative me-3">
通知
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-warning text-dark">
5
<span class="visually-hidden">新通知</span>
</span>
</button>
<button type="button" class="btn btn-outline-primary position-relative">
个人资料
<span class="position-absolute top-0 start-100 translate-middle p-2 bg-success border border-light rounded-circle">
<span class="visually-hidden">在线状态</span>
</span>
</button>
</div>
<!-- 实际应用场景 -->
<h2>实际应用场景</h2>
<!-- 导航栏中的徽章 -->
<h4>导航栏中的徽章</h4>
<nav class="navbar navbar-expand-lg navbar-dark bg-dark mb-4">
<div class="container">
<a class="navbar-brand" href="#">我的网站</a>
<div class="navbar-nav ms-auto">
<a class="nav-link position-relative" href="#">
消息
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger">
3
</span>
</a>
<a class="nav-link position-relative" href="#">
通知
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-warning text-dark">
12
</span>
</a>
</div>
</div>
</nav>
<!-- 列表中的徽章 -->
<h4>列表中的徽章</h4>
<ul class="list-group mb-4">
<li class="list-group-item d-flex justify-content-between align-items-center">
收件箱
<span class="badge bg-primary rounded-pill">14</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
已发送
<span class="badge bg-secondary rounded-pill">2</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
草稿箱
<span class="badge bg-warning text-dark rounded-pill">1</span>
</li>
<li class="list-group-item d-flex justify-content-between align-items-center">
垃圾箱
<span class="badge bg-danger rounded-pill">5</span>
</li>
</ul>
<!-- 卡片中的徽章 -->
<h4>卡片中的徽章</h4>
<div class="row">
<div class="col-md-4 mb-3">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title mb-0">项目 A</h5>
<span class="badge bg-success">进行中</span>
</div>
<div class="card-body">
<p class="card-text">这是一个正在进行的项目。</p>
<div class="d-flex justify-content-between">
<small class="text-muted">进度: 75%</small>
<span class="badge bg-info">高优先级</span>
</div>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title mb-0">项目 B</h5>
<span class="badge bg-warning text-dark">暂停</span>
</div>
<div class="card-body">
<p class="card-text">这个项目暂时暂停。</p>
<div class="d-flex justify-content-between">
<small class="text-muted">进度: 45%</small>
<span class="badge bg-secondary">中优先级</span>
</div>
</div>
</div>
</div>
<div class="col-md-4 mb-3">
<div class="card">
<div class="card-header d-flex justify-content-between align-items-center">
<h5 class="card-title mb-0">项目 C</h5>
<span class="badge bg-primary">已完成</span>
</div>
<div class="card-body">
<p class="card-text">这个项目已经完成。</p>
<div class="d-flex justify-content-between">
<small class="text-muted">进度: 100%</small>
<span class="badge bg-success">低优先级</span>
</div>
</div>
</div>
</div>
</div>
<!-- 表格中的徽章 -->
<h4>表格中的徽章</h4>
<div class="table-responsive">
<table class="table table-striped">
<thead>
<tr>
<th>用户名</th>
<th>邮箱</th>
<th>角色</th>
<th>状态</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>张三</td>
<td>zhangsan@example.com</td>
<td><span class="badge bg-primary">管理员</span></td>
<td><span class="badge bg-success">在线</span></td>
<td>
<button class="btn btn-sm btn-outline-primary">编辑</button>
</td>
</tr>
<tr>
<td>李四</td>
<td>lisi@example.com</td>
<td><span class="badge bg-info">编辑者</span></td>
<td><span class="badge bg-warning text-dark">离开</span></td>
<td>
<button class="btn btn-sm btn-outline-primary">编辑</button>
</td>
</tr>
<tr>
<td>王五</td>
<td>wangwu@example.com</td>
<td><span class="badge bg-secondary">用户</span></td>
<td><span class="badge bg-danger">离线</span></td>
<td>
<button class="btn btn-sm btn-outline-primary">编辑</button>
</td>
</tr>
</tbody>
</table>
</div>
<!-- 标签云 -->
<h4>标签云</h4>
<div class="mb-4">
<span class="badge bg-primary me-1 mb-1">JavaScript</span>
<span class="badge bg-success me-1 mb-1">HTML</span>
<span class="badge bg-info me-1 mb-1">CSS</span>
<span class="badge bg-warning text-dark me-1 mb-1">Bootstrap</span>
<span class="badge bg-danger me-1 mb-1">React</span>
<span class="badge bg-secondary me-1 mb-1">Vue.js</span>
<span class="badge bg-dark me-1 mb-1">Node.js</span>
<span class="badge bg-primary me-1 mb-1">Python</span>
<span class="badge bg-success me-1 mb-1">Django</span>
<span class="badge bg-info me-1 mb-1">Flask</span>
</div>
</div>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>自定义徽章样式
自定义颜色
css
.badge-custom {
color: #fff;
background-color: #6f42c1;
}
.badge-gradient {
background: linear-gradient(45deg, #007bff, #6610f2);
color: white;
}html
<span class="badge badge-custom">自定义颜色</span>
<span class="badge badge-gradient">渐变徽章</span>大小变体
css
.badge-lg {
font-size: 0.875rem;
padding: 0.5rem 0.75rem;
}
.badge-sm {
font-size: 0.75rem;
padding: 0.25rem 0.5rem;
}html
<span class="badge bg-primary badge-lg">大徽章</span>
<span class="badge bg-primary">默认徽章</span>
<span class="badge bg-primary badge-sm">小徽章</span>可访问性
为徽章添加适当的可访问性属性:
html
<button type="button" class="btn btn-primary position-relative">
消息
<span class="position-absolute top-0 start-100 translate-middle badge rounded-pill bg-danger"
aria-label="3条未读消息">
3
</span>
</button>
<!-- 对于纯装饰性的徽章 -->
<h3>新功能 <span class="badge bg-success" aria-hidden="true">新</span></h3>最佳实践
- 语义化使用:根据内容的含义选择合适的颜色
- 保持简洁:徽章中的文本应该简短明了
- 一致性:在同一个应用中保持徽章样式的一致性
- 可访问性:为屏幕阅读器用户提供适当的标签
- 适度使用:避免过度使用徽章,以免造成视觉混乱
下一步
现在你已经掌握了 Bootstrap 徽章的使用方法,接下来我们将学习进度条组件。