写给前端开发的设计系统( Token)简介

做组件库或者网页设计时,你一定见过这些词:

primary / accent / surface / border / text / state

看起来很抽象,其实一点都不复杂。

这篇文章只做一件事:
用“做页面”的视角,把这些 token 讲清楚


先记住这一句话

primary  → 主要按钮用啥颜色
accent   → 哪里需要点一下更好看
surface  → 背景一层一层怎么铺
border   → 哪些地方需要分隔一下
text     → 字有轻重层级
state    → 鼠标操作时怎么变

用一个页面来理解(最重要)

假设你在做一个常见页面:

👉 dashboard / 博客 / landing page

你其实是在做下面这些事情


1. Surface:先把页面“铺出来”

你第一步一定是:

  • 页面背景
  • 卡片
  • 弹窗
surface.base   // 页面背景
surface.card   // 卡片
surface.modal  // 弹窗

本质:铺背景层

如果没有 surface 分层:

页面会“糊成一片”
dark mode 会很难做


2. Border:让结构清晰

接下来你会发现:

“东西有点挤,看不清边界”

于是你加:

  • 卡片边框
  • 分割线
  • input 边框
border.subtle   // 分割线
border.default  // 卡片 / input

本质:把内容分开


3. Primary:告诉用户“点这个!”

页面里最重要的是按钮:

Sign up / Buy / Submit

你会用一个最显眼的颜色:

color.primary

本质:引导用户点击


4. Accent:让页面不无聊

如果页面太单调,你会加:

  • tag
  • badge
  • 小图标
color.accent

本质:点缀,而不是主角


5. Text:信息分层

页面里一定有:

  • 标题
  • 描述
  • 辅助信息

text.primary // 标题 / 正文主文本

color.primary 是“让用户去点”的强调色,常用于按钮、链接、选中态

text.primary 是“让用户去读”的文字颜色,常用于标题和正文

他们经常不相同

text.secondary // 描述
text.tertiary // 辅助

本质:信息有轻重


6. State:交互反馈

最后你会处理交互:

  • hover
  • active
  • focus
primary.hover
border.focus

本质:用户操作要有反馈


用一段话总结整个过程

1. 用 surface 搭骨架(背景、卡片)
2. 用 border 分块(避免糊)
3. 用 text 放信息(分层级)
4. 用 primary 引导点击(CTA)
5. 用 accent 做点缀(更生动)
6. 用 state 做反馈(更自然)


常见错误(非常真实)

  • primary 到处用 → 没重点
  • 没有 surface 层级 → 页面很平
  • border 太重 → 看起来很“旧”
  • text 没分级 → 信息混乱
  • 没有 hover / focus → 体验很差

在组件库里的用法(重点)

这些 token 最终是给你写组件用的:

<Button variant="primary" />
<Card />
<Badge variant="accent" />
<Input />

背后映射:

Button.primary → color.primary
Card           → surface.card + border.subtle
Input          → surface.base + border.default

你不再“选颜色”,而是“用规则”

Comments (0)

Loading session...