Skip to content

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>

最佳实践

  1. 语义化使用:根据内容的含义选择合适的颜色
  2. 保持简洁:徽章中的文本应该简短明了
  3. 一致性:在同一个应用中保持徽章样式的一致性
  4. 可访问性:为屏幕阅读器用户提供适当的标签
  5. 适度使用:避免过度使用徽章,以免造成视觉混乱

下一步

现在你已经掌握了 Bootstrap 徽章的使用方法,接下来我们将学习进度条组件。

下一章:Bootstrap 进度条 →

本站内容仅供学习和研究使用。