一枚按钮,藏着界面交互的全部讲究

按钮是最常用的组件,也最容易做错:层级不清、状态缺失、点击防抖没做。这篇把按钮组件从设计到实现的每一个细节讲透。

6尺寸规格
8颜色变体
3必备状态
按钮组件实战
按钮层级

先懂层级,再谈样式

一个界面里按钮必须有主次:主操作(Primary)、次操作(Secondary)、危险操作(Danger)、文本操作(Text)。层级清晰,用户才不会点错。

很多新手把所有按钮都做成一个样式,结果页面“全是重点等于没有重点”。层级设计是按钮组件的灵魂。

  • 主次层级:一个页面只有一个主按钮
  • 危险操作用红色并二次确认
  • 文本按钮用于次要/低风险操作
  • 图标按钮要带可访问性说明

黄金法则:一屏内主操作按钮不超过 1 个,次操作不超过 3 个。

按钮组件能力清单

一个成熟的按钮组件应该覆盖这些能力。

📐

尺寸体系

xs/sm/md/lg 四档,配合表单与页面的空间节奏。

🎨

颜色变体

主色、次色、成功、危险、警告、信息,语义化表达。

🔗

链接按钮

既可以是 button 也可以是 a 标签,语义正确。

⏳

加载状态

提交中的 loading 态,防止重复提交。

🚫

禁用状态

禁用要有明确的视觉区分与语义说明。

🖱️

图标按钮

纯图标与图标+文字的两种形态。

按钮组件落地四步

从选型到上线,把按钮做对。

  1. 01

    确定层级

    梳理页面主流程,明确哪个是主按钮,哪些是辅助。

  2. 02

    配置尺寸与变体

    按设计规范选择尺寸与颜色语义,全局统一。

  3. 03

    处理交互状态

    补全 hover、active、focus、loading、disabled 全状态。

  4. 04

    联调与测试

    重点验证提交防抖、键盘可达性与无障碍读屏。

按钮状态一览

每个状态都要有明确的设计表达。

状态触发视觉建议
默认页面初始主色实底/次色描边
悬停鼠标移入亮度/阴影变化
按下点击时下沉/颜色加深
聚焦键盘 Tab焦点环清晰可见
加载提交中转圈 + 禁用点击
禁用条件不满足降低对比度 + 不可点

按钮组件高频问题

按钮提交为什么要点两次?

大概率缺少防重复提交。提交时置为 loading 态并禁用,直到接口返回。这是最常被忽视的细节。

图标按钮怎么保证可访问性?

纯图标按钮必须加 aria-label 或隐藏文本,否则读屏用户无法理解用途。

主按钮和次按钮怎么配色?

遵循设计令牌:主按钮用品牌主色,次按钮用描边/浅色底,避免两个同权重按钮并排。

移动端按钮要多大?

建议最小触控高度 44px,避免误触。文字按钮也要保证点击区域。

组件细节拿不准?

组件细节拿不准?

按钮只是组件化的起点。有组件设计或实现的问题,欢迎来问答区交流,我们给你具体的代码思路。