返回
UI · №14 · PLATE

按钮怎么选Button Variants

Button主按钮次按钮幽灵按钮

先看怎么选

用户要完成一个操作(登陆、提交表单、删除、取消等),你需要选择哪种按钮来表达这个动作的"重要程度"。

朱批看操作的重要性——主要操作用 Primary(突出显眼),次要操作用 Secondary(陪衬),破坏性操作用 Danger(警示色),非关键的替代操作用 Ghost(克制)。

LIVE SPECIMEN真的能玩,点点看
Primary
Secondary
Ghost
Danger

Primary

Primary Button

页面上最重要的操作。用户完成这一步才能达成目标。颜色用品牌强调色(朱砂

适合
提交表单、登陆、发布文章、保存更改、确认购买——只要是"用户真正想做的主操作"。通常每个页面只有 1-2 个。
不适合
不要把所有按钮都做成 Primary。如果一个页面有 5 个同样红的按钮,用户看不出哪个是真正想要的。
实现细节与 Prompt
视觉层级
品牌强调色,对比度 5.28 on white(WCAG AA)
触达区
最小 44x44px(移动端标准)
状态
Normal → Hover → Active → Disabled → Loading
可访问性
Button 有文案,不只有 Icon;disabled 时 aria-disabled=true
Create a Primary button for [action]. Style: - Background: Cinnabar (#C13E23) - Text: White (#FFFFFF) - Height: 44px (touch target) - Border radius: 6px - States: - Normal: Cinnabar background - Hover: Cinnabar-deep (#A33418) - Active: Scale 0.98 - Disabled: Opacity 0.5, cursor not-allowed - Loading: Show spinner + disable - Responsive: Full width on mobile, auto width on desktop - Font: 16px, font-weight: 500, text-align: center

Secondary

Secondary Button

页面上比较重要但不是主操作的按钮。视觉上比 Primary 弱,但比 Ghost 更有存在感。通常用深灰边框,背景透明或浅灰。

适合
「取消」「返回」「保存草稿」「应用筛选」——操作本身有意义,但不是用户的最终目标。一个页面可以有多个 Secondary。
不适合
不要同时用 Primary 和 Secondary 做平等的选择。如果是"保存 vs 取消"这种对立操作,用 Primary(保存)+ Ghost(取消)更清楚。
实现细节与 Prompt
边框色
Ink-2,对比度 4.5+ 达 AA
背景
透明(让下层内容透出)或极浅背景
用途
配合 Primary 形成操作对比
Create a Secondary button for [action]. Style: - Border: 1px solid Ink-2 (#6B675F) - Background: transparent or Paper (#FAF8F4) - Text: Ink (#1C1B18) - Height: 44px - Border radius: 6px - States: - Normal: Border + transparent background - Hover: Border darker, background lightened - Active: Scale 0.98 - Disabled: Opacity 0.5 - Font: 16px, font-weight: 500

Ghost

Ghost Button

最克制的按钮。只有文字,没有边框或背景。用于非关键操作、替代方案、或"用户可能不需要的"功能。

适合
「忘记密码?」「了解更多」「跳过」「后退」——这些操作存在,但不是用户的优先路径。价格列表中的「查看详情」按钮。
不适合
不要把 Primary 操作做成 Ghost——用户会错过它。Ghost 适合"锦上添花"的功能,不适合"必须完成"的操作。
实现细节与 Prompt
最小化
没有背景、边框、阴影,只有文字
悬停
下划线,不抬升
适用
辅助链接、替代操作
Create a Ghost button for [action]. Style: - Background: transparent - Border: none - Text: Cinnabar (#C13E23) - Height: 44px (padding only, no visible height) - Text decoration: underline on hover - States: - Normal: Text only - Hover: Text color + underline - Active: Opacity 0.8 - Disabled: Opacity 0.5 - Font: 16px, font-weight: 400 - Minimal padding: 8px 0 (垂直 space only)

Danger

Danger Button

用于破坏性操作(删除、清空、注销)。用错误色(#A02C2C)警示用户"这个操作可能无法撤销"。

适合
删除文章、清空缓存、永久注销账号、批量删除——任何"操作后用户会失去什么"的操作。通常会配合确认弹窗。
不适合
不要过度使用 Danger。如果操作可以撤销(如删除草稿),就用 Secondary 而不是 Danger。Danger 是为了真正的"无法恢复"。
实现细节与 Prompt
警示色
错误色 #A02C2C,对比度 4.5+ 达 AA
行为
通常需要确认(Modal)
位置
通常在窗体底部,远离其他按钮
Create a Danger button for [destructive-action]. Style: - Background: Error (#A02C2C) - Text: White (#FFFFFF) - Height: 44px - Border radius: 6px - States: - Normal: Error background - Hover: Darker error shade - Active: Scale 0.98 - Disabled: Opacity 0.5 - Should always be paired with a confirmation dialog - Font: 16px, font-weight: 500

详细说明

按钮怎么选:Primary / Secondary / Ghost / Danger

它是什么

按钮是用户“触发一个动作”的最直接方式。但不是所有操作都一样重要。一个博客可能有“发布文章”(用户真正想做的)和“返回”(返回上一页),如果两个按钮颜色一样大小一样,用户会困惑哪个是真正要点的。

按钮的变体(颜色、样式、尺寸)存在的唯一目的:帮助用户一眼看出每个操作的重要程度

技术标注

考虑点 决策
对比度 所有按钮文字与背景 ≥ 4.5:1(WCAG AA);Deep Cinnabar (#A33418) hover 仍达标
触达区 移动端最小 44x44px;桌面 40x40px 可接受
焦点态 用户按 Tab 时必须有可见 Focus Ring(Cinnabar 边框或轮廓)
禁用态 disabled 属性 + aria-disabled="true" + 视觉淡化(opacity 0.5)
加载态 显示 Spinner + 文案「登陆中…」+ 禁用按钮(防重复点击)

什么时候用这个词

做设计决策时

场景 1:表单提交

表单有三个按钮:「保存」「保存草稿」「取消」

用户思考过程:
  1. 我想要的是什么?→ 保存文章
  2. 如果不确定呢?→ 先保存草稿
  3. 改主意了?→ 取消

按钮策略:
  「保存」→ Primary(用户的主目标)
  「保存草稿」→ Secondary(必要但不是第一选择)
  「取消」→ Ghost(用户可能根本不需要点)

视觉结果:
  用户一眼看到红色「保存」,知道这是推荐操作 ✓
  「保存草稿」次一级,用户可以看到它但不会误点
  「取消」淡到背景里,真的想取消的人能找到它

场景 2:列表操作

商品卡片上有两个操作:「加入购物车」「收藏」

加入购物车 → Primary(这是网站想要的主转化)
收藏 → Ghost(用户可能想,但不是网站目标)

如果两个都是 Secondary,用户不知道哪个优先 ✗

场景 3:破坏性操作

删除文章的弹窗有两个按钮:「删除」「保留」

保留 → Secondary(默认安全选项)
删除 → Danger(用户选它前会二思)

绝对不要「删除」用 Primary 品牌红——那是商业色,
不是警告色,会误导用户觉得"这是网站想要的" ✗

给 agent 发指令时

你现在要为一个任务管理应用设计「任务卡片」的操作按钮。

需求:
- 卡片上有「标记完成」「编辑」「删除」三个操作
- 移动端友好(44px 高)
- 按钮必须清晰表达操作的重要性和风险

你的按钮选择应该是:
- 「标记完成」→ Primary(用户最常做的操作)
- 「编辑」→ Secondary(次要但常用)
- 「删除」→ Danger(破坏性,要警示)

生成 HTML + CSS,包括所有状态(hover/active/disabled/loading)。

常见错误

错误 1:所有按钮都是 Primary 色

形成的问题:
- 用户不道哪个是推荐操作
- 页面显得"吵"(一堆红按钮)
- 可访问性:使用屏幕阅读器的用户听不出优先级

正确做法:一个页面最多 1-2 个 Primary,其他用 Secondary/Ghost

错误 2:用 Primary 做破坏性操作

按钮:「删除」(红色)

用户理解:网站想让我删除?这个红色看起来像"推荐操作"...
结果:用户误点删除,后悔莫及

正确做法:删除用 Danger 色 #A02C2C(暗红,有警示感)

错误 3:Ghost 按钮文字太小或颜色太淡

「忘记密码?」用 Ghost 但字色 #CCCCCC(太浅)

问题:看不清楚、对比度不足(WCAG 不过)
用户根本看不到这个选项

正确做法:Ghost 文字用 Cinnabar #C13E23,和 Primary 一样色
关键是没有背景,用户才觉得"不重要"

错误 4:加载时没有禁用按钮

用户点登陆 → 网络慢 → 用户再点一次 → 重复请求 → 后端报错

正确做法:Loading 时 disabled + cursor: not-allowed
防止重复提交

相关词条

  • №01「Card」 — 卡片上通常有多个按钮,需要用变体区分重要性
  • №02「Tabs」 — Tab 切换有时也用类似的“当前 vs 非当前”的视觉区分逻辑
  • №03「Link vs Button」 — 什么时候用 Button,什么时候用 Link
  • №04「Loading Spinner」 — 按钮加载态配合 Spinner
  • №05「Focus Ring」 — 键盘用户必须能通过 Focus 看出按钮在哪

完整可复制的 Prompt

设计一个任务管理应用的「任务卡片」中的操作按钮组。

需求:
1. 三个操作按钮:
   - 「标记完成」(primary) — 用户最常用的操作
   - 「编辑」(secondary) — 次要操作
   - 「删除」(danger) — 破坏性操作,需要确认

2. 设计约束:
   - 配色遵循 TellYourAgent 设计系统
     * Primary:Cinnabar #C13E23(hover #A33418)
     * Secondary:边框 Ink-2 #6B675F
     * Danger:Error #A02C2C
   - 所有文字与背景对比度 ≥ 4.5:1(WCAG AA)
   - 移动端最小触达区 44x44px
   - Border radius 6px

3. 所有按钮状态:
   - Normal:基础样式
   - Hover:颜色变化 + 不抬升(不加阴影)
   - Active:缩小 0.98(按下感)
   - Disabled:opacity 0.5 + cursor: not-allowed
   - Loading:Spinner + 文案「操作中...」+ 禁用

4. 响应式:
   - 桌面(≥768px):三个按钮并排,每个自适应宽度
   - 移动(<768px):三个按钮堆叠(每行一个),full-width

5. 可访问性:
   - 每个按钮都有清晰的 aria-label(对屏幕阅读器)
   - Focus Ring 可见(outline 2px solid Cinnabar)
   - 键盘用户可以 Tab 遍历所有按钮

输出:
- HTML 结构(语义化,用 <button> 不是 <div>)
- CSS(包括所有状态、媒体查询、focus-visible)
- JavaScript(如需 Loading 态演示)
- 使用说明(何时用哪种按钮)

实施步骤

  1. 定义色彩系统(在 DESIGN.md 中已有)

    • Primary: #C13E23 → hover: #A33418
    • Secondary: 边框 #6B675F
    • Danger: #A02C2C
  2. 建立 CSS 类名系统

    .button           /* 基础样式:高度、圆角、字号 */
    .button-primary   /* 背景 + 文字色 */
    .button-secondary /* 边框 + 透明背景 */
    .button-ghost     /* 只有文字 */
    .button-danger    /* Danger 背景 */
    .button:disabled  /* 禁用态 */
    .button.loading   /* 加载态 */
  3. 演示组件(在 TellYourAgent 网站上实时展示)

    • 四种变体的对比
    • 所有状态转换动画
    • 响应式预览
    • 可访问性检查反馈
  4. 实测 Prompt 用生成的 Prompt 给 Claude 或其他 LLM,验证它能生成高质量的按钮代码。


为什么这个决策很重要

按钮看起来很简单,但它是整个界面信息层级传达的基础。

  • 用户用眼睛扫描页面,首先看到什么?大多数情况是最红、最突出的按钮
  • 如果你把“删除”做成主按钮色,用户会莫名其妙地删除东西
  • 如果所有按钮都一样,用户无法快速判断“这个操作安全吗”

一句话:按钮的样式不是装饰,是对用户的指引。选对了,用户体验提升;选错了,用户会误操作。