Skip to content

Foundation 标签

Foundation 标签(Labels)是一种小型的 UI 元素,用于突出显示信息、标记状态或分类内容。本章将介绍 Foundation 标签的各种用法。

基本标签

使用 .label 类创建基本标签:

html
<span class="label">默认标签</span>

标签颜色

Foundation 提供了多种预定义的标签颜色:

html
<span class="label primary">Primary</span>
<span class="label secondary">Secondary</span>
<span class="label success">Success</span>
<span class="label warning">Warning</span>
<span class="label alert">Alert</span>

颜色用途说明

类名颜色常见用途
.primary蓝色主要信息、默认状态
.secondary灰色次要信息、中性状态
.success绿色成功、已完成、在线
.warning黄色警告、待处理、注意
.alert红色错误、危险、紧急

标签在文本中的使用

标签可以嵌入到段落或标题中:

html
<h1>产品名称 <span class="label">新品</span></h1>

<h2>版本 2.0 <span class="label success">稳定版</span></h2>

<p>
    这个功能目前处于 <span class="label warning">测试中</span> 状态,
    请谨慎使用。
</p>

徽章(Badge)

徽章是标签的变体,通常用于显示数字或计数:

html
<span class="badge">1</span>
<span class="badge primary">5</span>
<span class="badge secondary">10</span>
<span class="badge success">99+</span>
<span class="badge warning">3</span>
<span class="badge alert">!</span>

徽章与导航结合

html
<ul class="menu">
    <li><a href="#">收件箱 <span class="badge primary">5</span></a></li>
    <li><a href="#">草稿箱 <span class="badge secondary">2</span></a></li>
    <li><a href="#">垃圾箱 <span class="badge alert">10</span></a></li>
</ul>

徽章与按钮结合

html
<a class="button" href="#">
    消息 <span class="badge">3</span>
</a>

<a class="button alert" href="#">
    通知 <span class="badge" style="background: white; color: #cc4b37;">99+</span>
</a>

自定义标签样式

圆角标签

html
<style>
    .label.rounded {
        border-radius: 50px;
        padding-left: 12px;
        padding-right: 12px;
    }
</style>

<span class="label rounded">圆角标签</span>
<span class="label rounded primary">Primary</span>
<span class="label rounded success">Success</span>

空心标签

html
<style>
    .label.hollow {
        background: transparent;
        border: 1px solid currentColor;
    }
    .label.hollow.primary { color: #1779ba; }
    .label.hollow.success { color: #3adb76; }
    .label.hollow.warning { color: #ffae00; }
    .label.hollow.alert { color: #cc4b37; }
</style>

<span class="label hollow primary">Primary</span>
<span class="label hollow success">Success</span>
<span class="label hollow warning">Warning</span>
<span class="label hollow alert">Alert</span>

带图标的标签

html
<span class="label success">
    <i class="fi-check"></i> 已完成
</span>

<span class="label warning">
    <i class="fi-clock"></i> 进行中
</span>

<span class="label alert">
    <i class="fi-x"></i> 已取消
</span>

标签尺寸

自定义不同尺寸的标签:

html
<style>
    .label.tiny {
        font-size: 0.6rem;
        padding: 0.2rem 0.4rem;
    }
    .label.small {
        font-size: 0.7rem;
        padding: 0.25rem 0.5rem;
    }
    .label.large {
        font-size: 1rem;
        padding: 0.5rem 0.75rem;
    }
</style>

<span class="label tiny">Tiny</span>
<span class="label small">Small</span>
<span class="label">Default</span>
<span class="label large">Large</span>

可移除标签

创建可以关闭的标签:

html
<style>
    .label.removable {
        display: inline-flex;
        align-items: center;
        gap: 5px;
    }
    .label.removable .remove-btn {
        cursor: pointer;
        opacity: 0.7;
        font-weight: bold;
    }
    .label.removable .remove-btn:hover {
        opacity: 1;
    }
</style>

<span class="label removable primary">
    JavaScript
    <span class="remove-btn" onclick="this.parentElement.remove()">&times;</span>
</span>

<span class="label removable success">
    HTML
    <span class="remove-btn" onclick="this.parentElement.remove()">&times;</span>
</span>

<span class="label removable warning">
    CSS
    <span class="remove-btn" onclick="this.parentElement.remove()">&times;</span>
</span>

标签组

创建一组相关的标签:

html
<style>
    .label-group {
        display: flex;
        flex-wrap: wrap;
        gap: 5px;
    }
</style>

<div class="label-group">
    <span class="label">前端开发</span>
    <span class="label">React</span>
    <span class="label">Vue</span>
    <span class="label">Angular</span>
    <span class="label">Node.js</span>
</div>

状态标签示例

订单状态

html
<table>
    <thead>
        <tr>
            <th>订单号</th>
            <th>金额</th>
            <th>状态</th>
        </tr>
    </thead>
    <tbody>
        <tr>
            <td>ORD001</td>
            <td>¥199</td>
            <td><span class="label success">已完成</span></td>
        </tr>
        <tr>
            <td>ORD002</td>
            <td>¥299</td>
            <td><span class="label warning">配送中</span></td>
        </tr>
        <tr>
            <td>ORD003</td>
            <td>¥99</td>
            <td><span class="label primary">待付款</span></td>
        </tr>
        <tr>
            <td>ORD004</td>
            <td>¥599</td>
            <td><span class="label alert">已取消</span></td>
        </tr>
    </tbody>
</table>

用户角色

html
<ul class="no-bullet">
    <li>
        张三 <span class="label alert">管理员</span>
    </li>
    <li>
        李四 <span class="label primary">编辑</span>
    </li>
    <li>
        王五 <span class="label secondary">普通用户</span>
    </li>
</ul>

完整示例

html
<!DOCTYPE html>
<html class="no-js" lang="zh-CN">
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Foundation 标签示例</title>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/css/foundation.min.css">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/foundicons/3.0.0/foundation-icons.min.css">
    <style>
        .demo-section {
            margin-bottom: 30px;
            padding: 20px;
            background: #f8f8f8;
            border-radius: 4px;
        }
        .demo-section h3 {
            margin-bottom: 15px;
            border-bottom: 1px solid #ddd;
            padding-bottom: 10px;
        }
        .label { margin-right: 5px; margin-bottom: 5px; }

        /* 自定义样式 */
        .label.rounded { border-radius: 50px; padding-left: 12px; padding-right: 12px; }
        .label.hollow { background: transparent; border: 1px solid currentColor; }
        .label.hollow.primary { color: #1779ba; }
        .label.hollow.success { color: #3adb76; }
        .label.hollow.warning { color: #ffae00; }
        .label.hollow.alert { color: #cc4b37; }

        .label.tiny { font-size: 0.6rem; padding: 0.2rem 0.4rem; }
        .label.small { font-size: 0.7rem; padding: 0.25rem 0.5rem; }
        .label.large { font-size: 1rem; padding: 0.5rem 0.75rem; }

        .label.removable {
            display: inline-flex;
            align-items: center;
            gap: 5px;
        }
        .label.removable .remove-btn {
            cursor: pointer;
            opacity: 0.7;
        }
        .label.removable .remove-btn:hover { opacity: 1; }

        .label-group { display: flex; flex-wrap: wrap; gap: 5px; }
    </style>
</head>
<body>
    <div class="grid-container">
        <h1>Foundation 标签展示</h1>

        <div class="demo-section">
            <h3>基本标签</h3>
            <span class="label primary">Primary</span>
            <span class="label secondary">Secondary</span>
            <span class="label success">Success</span>
            <span class="label warning">Warning</span>
            <span class="label alert">Alert</span>
        </div>

        <div class="demo-section">
            <h3>徽章</h3>
            <span class="badge">1</span>
            <span class="badge primary">5</span>
            <span class="badge secondary">10</span>
            <span class="badge success">99+</span>
            <span class="badge warning">3</span>
            <span class="badge alert">!</span>
        </div>

        <div class="demo-section">
            <h3>标签尺寸</h3>
            <span class="label tiny primary">Tiny</span>
            <span class="label small primary">Small</span>
            <span class="label primary">Default</span>
            <span class="label large primary">Large</span>
        </div>

        <div class="demo-section">
            <h3>圆角标签</h3>
            <span class="label rounded primary">Primary</span>
            <span class="label rounded success">Success</span>
            <span class="label rounded warning">Warning</span>
            <span class="label rounded alert">Alert</span>
        </div>

        <div class="demo-section">
            <h3>空心标签</h3>
            <span class="label hollow primary">Primary</span>
            <span class="label hollow success">Success</span>
            <span class="label hollow warning">Warning</span>
            <span class="label hollow alert">Alert</span>
        </div>

        <div class="demo-section">
            <h3>带图标标签</h3>
            <span class="label success"><i class="fi-check"></i> 已完成</span>
            <span class="label warning"><i class="fi-clock"></i> 进行中</span>
            <span class="label alert"><i class="fi-x"></i> 已取消</span>
            <span class="label primary"><i class="fi-star"></i> 推荐</span>
        </div>

        <div class="demo-section">
            <h3>可移除标签</h3>
            <span class="label removable primary">
                JavaScript <span class="remove-btn" onclick="this.parentElement.remove()">&times;</span>
            </span>
            <span class="label removable success">
                HTML <span class="remove-btn" onclick="this.parentElement.remove()">&times;</span>
            </span>
            <span class="label removable warning">
                CSS <span class="remove-btn" onclick="this.parentElement.remove()">&times;</span>
            </span>
        </div>

        <div class="demo-section">
            <h3>在标题中使用</h3>
            <h2>Foundation 6 <span class="label success">最新版</span></h2>
            <h4>功能预览 <span class="label warning">Beta</span></h4>
        </div>

        <div class="demo-section">
            <h3>标签组</h3>
            <div class="label-group">
                <span class="label">HTML</span>
                <span class="label">CSS</span>
                <span class="label">JavaScript</span>
                <span class="label">React</span>
                <span class="label">Vue</span>
                <span class="label">Node.js</span>
            </div>
        </div>

        <div class="demo-section">
            <h3>导航中的徽章</h3>
            <ul class="menu">
                <li><a href="#">收件箱 <span class="badge primary">5</span></a></li>
                <li><a href="#">草稿箱 <span class="badge secondary">2</span></a></li>
                <li><a href="#">已发送</a></li>
                <li><a href="#">垃圾箱 <span class="badge alert">10</span></a></li>
            </ul>
        </div>

        <div class="demo-section">
            <h3>状态标签示例</h3>
            <table class="hover">
                <thead>
                    <tr>
                        <th>订单号</th>
                        <th>客户</th>
                        <th>金额</th>
                        <th>状态</th>
                    </tr>
                </thead>
                <tbody>
                    <tr>
                        <td>ORD001</td>
                        <td>张三</td>
                        <td>¥199</td>
                        <td><span class="label success">已完成</span></td>
                    </tr>
                    <tr>
                        <td>ORD002</td>
                        <td>李四</td>
                        <td>¥299</td>
                        <td><span class="label warning">配送中</span></td>
                    </tr>
                    <tr>
                        <td>ORD003</td>
                        <td>王五</td>
                        <td>¥99</td>
                        <td><span class="label primary">待付款</span></td>
                    </tr>
                    <tr>
                        <td>ORD004</td>
                        <td>赵六</td>
                        <td>¥599</td>
                        <td><span class="label alert">已取消</span></td>
                    </tr>
                </tbody>
            </table>
        </div>
    </div>

    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/foundation-sites@6.7.5/dist/js/foundation.min.js"></script>
    <script>$(document).foundation();</script>
</body>
</html>

标签最佳实践

  1. 颜色语义化:使用合适的颜色表达状态含义
  2. 简洁文字:标签文字应该简短明了
  3. 适量使用:避免在页面上使用过多标签造成视觉混乱
  4. 对比度:确保标签文字和背景有足够的对比度
  5. 可访问性:对于重要信息,不要仅依赖颜色传达含义
html
<!-- 好的实践:颜色 + 图标 + 文字 -->
<span class="label success">
    <i class="fi-check" aria-hidden="true"></i> 已完成
</span>

<!-- 避免:仅用颜色区分 -->
<span class="label success"></span>
<span class="label alert"></span>

总结

本章我们学习了:

  • 基本标签的创建和颜色变体
  • 徽章的使用
  • 自定义标签样式(圆角、空心、带图标)
  • 标签尺寸控制
  • 可移除标签和标签组
  • 标签在实际场景中的应用

下一章,我们将学习 Foundation 提醒框


提示:标签是一种有效的信息标记方式,但要注意不要过度使用,保持页面的整洁和可读性。