初创团队如何构建最小可行设计系统
8/30/2025
这篇文章是我在初创团队与大公司中做设计期间的经验,结合自身设计实践与阅读,针对初创团队如何构建设计系统的一些思考与总结。仅限 Web 平台,移动端仅供参考 :)
首先,为什么需要设计系统?
许多人误以为设计系统就是 Figma 里那一套复杂的组件库和详尽的说明文档。但对于一家初创团队而言,设计系统的核心价值不在于设计文档与 Figma 的各种组件,而在于代码。它最终体现为代码库中可复用的 CSS 变量、组件和样式。
你可以暂时没有完美的 Figma 文件或设计文档,但你必须拥有能够交付给用户的代码。这些代码是确保产品体验一致性的基础,为用户的视觉感受和使用体验设定了一个可靠的底线。它让你的产品看起来和感觉起来都更加专业和可靠。
初创团队需要什么样的设计系统?
结合我在 Zeabur(初创团队) 和腾讯(所在部门具有一个完整且复杂的设计系统)的工作经验,一个最小化但高效的设计系统,只需要专注在以下几个关键部分:
颜色 : 一切的基石
一致的颜色不仅能为用户提供连贯统一的视觉体验,也能极大提升前端的开发效率。因此,构建一个具备可访问性、可扩展性和统一命名规范的颜色系统,是整个 MVP 设计系统中最关键、最需要深思熟虑的一步。
颜色是所有视觉元素的 DNA,一旦颜色系统确定并大规模使用,若没有考虑以下几点,后期修改成本将极其高昂,无异于一次彻底的设计重构。在 Zeabur 时,我们就遇到了旧的颜色系统无法很好的支援浅色主题,文本的可读性也不高,无法很好的拓展色阶的问题,因此我们重新设计一个颜色系统,也耗费了不少时间。
在搭建颜色系统时,你需要思考以下问题:
- 品牌表达: 颜色如何体现产品特性?如何与品牌 Logo 和整体气质相呼应?
- 命名规范: 该如何为颜色命名?是采用语义化命名(如
$colorPrimary,$colorError),还是类似 Tailwind CSS 的功能性命名(如blue-500,gray-900)?后者通常在扩展性和应对多主题时更具优势。 - 颜色数量与拓展性: 我需要多少种颜色?未来是否需要支持更多的颜色?每种颜色都定义多少个色阶?后续是否可能需要新增色阶?哦对了,一般灰色系的颜色可能会需要更多的色阶,因为它们通常用于不同层级的背景色。
- 多主题支持: 如何规划亮色(Light Mode)与暗色(Dark Mode)模式的切换?未来是否可能需要支持更多主题(如针对不同客户的品牌色)?
- 可访问性: 如何确保文本与背景色之间的对比度符合 WCAG 标准,保证视觉障碍用户的可用性?
相信我,一个经过深思熟虑的颜色系统,会在未来的迭代中为你节省难以估量的时间。
圆角与图标:一致的轮廓
把圆角和图标放在一起讨论,可能会让人有些意外。但实际上,这两者共同定义了产品的视觉轮廓。除了颜色之外,它们是保证视觉体验一致性的一个重要因素。
一个产品的圆角半径,应该与其图标的端点折角处理(比如是圆润的还是尖锐的)保持风格一致。这会形成一种很微妙的视觉和谐感。

-
圆角: 较大的圆角通常会营造出更友好、更柔和的氛围;而较小甚至锐利的直角则会传递出更专业、更严肃的感觉。重要的是,你需要统一圆角大小!
-
图标: 在项目初期,请直接选择一个风格统一的开源图标库(例如 Lucide, Feather Icons 或 Tabler Icons),并坚持使用它。最糟糕的做法,就是从不同平台东拼西凑各种风格不一的图标。
基础控件: 核心交互
在创业初期,你完全不需要像 Ant Design 或 Material Design 那样,一次性实现几十个大而全的组件。你只需要专注在几个最高频、最核心的基础控件上,就足以构建出覆盖 70%-80% 使用场景的设计系统。可以参考Linear如何管理他们的设计系统。
根据我的设计经验,这些基础控件包括:
- 按钮: 各种状态(primary, secondary, ghost...)和尺寸。
- 输入框: 文本输入(Input)、文本区域(Textarea)。
- 选择控件: 复选框 (Checkbox)、单选按钮 (Radio Button)、开关 (Switch)。
- 反馈与提示: 对话框 (Modal/Dialog)、通知 (Notification/Toast)。
- 其他你的产品特有的高频使用的组件
这些组件是用户与产品交互的支点。将它们打磨好,产品的核心体验就有了保障。
排版与间距:信息分层
初创团队无需一开始就定义复杂的排版系统。我们只需从最核心的文本角色出发,确保信息层级清晰。一个最小化的排版系统至少应包括以下三个级别:
- 标题 (Heading): 用于页面或区块的大标题。它应该是最醒目的,可以定义 1-2 个级别。例如:
20px加粗 (Bold) - 正文 (Body): 用于大多数段落、描述和常规文本,是产品中最常见的文字。可读性是第一要务。 例如:
14px常规 (Regular) - 辅助/次要文本 (Subtle/Secondary): 用于占位符 (Placeholder)、提示信息 (Hint)、或者禁用的文本状态。它的视觉强度应该弱于正文。例如:
14px常规,并使用一个对比度较低的专用色(如gray-500)。
随着产品功能变复杂,信息层级会增多。届时,你的排版系统可以很自然地演进:
- 增加标题层级: 从单一的
Heading扩展到H1,H2,H3... - 细化正文样式: 可能会分化出
Body-Large,Body-Small。 - 引入功能性样式: 增加如
Link(链接),Caption(图说),Button-Text(按钮文字) 等专用样式。
对于间距,最简单有效的方法是定义一个基础单位(比如 8px),然后所有的间距、内外边距(margin, padding)都使用这个基础单位的倍数 (8px, 16px, 24px, 32px ...)。这样做的好处是:
- 减少决策: 设计师和工程师不再需要凭感觉决定用
10px还是12px,只需从预设的间距梯度中选择。 - 视觉和谐: 元素之间的关系会变得有规律、有节奏,视觉上更加和谐。
动效(可选)
动效是设计系统中最容易被忽略,却又最能提升产品“质感”的部分。对于初创团队,关键在于统一动效的语言。这意味着,当用户与不同的组件交互时,能感受到一种熟悉的、有预期的节奏感。一个最小化的动效系统,只需要定义两个核心元素:时间和缓动曲线。
- 时长: 定义几个固定的时间值,用于不同场景。这能避免工程师凭感觉随意设置
200ms或300ms。- 快速:
100ms - 150ms。用于微小、即时的反馈,如按钮悬浮 (Hover)、图标高亮。 - 中速:
200ms - 300ms。用于中等范围的元素变化,如卡片展开/收起、对话框 (Modal) 弹出。 - 慢速:
400ms - 500ms。用于较大面板的切换,如侧边栏 (Sidebar) 的滑入滑出。
- 快速:
- 缓动曲线: 定义一到两个缓动函数,来决定动画的“性格”。
ease-in-out是一种非常安全且自然的默认选项,它模拟了物理世界中物体加速和减速的过程。- 标准曲线: 一个通用的
ease-in-out曲线,用于绝大多数界面元素的过渡。 - 强调曲线: 一个更具张力的曲线,用于需要吸引用户注意力的时刻,但初期可以省略。
- 标准曲线: 一个通用的
其他
最后还有几个小建议:
- 从代码开始: 直接在你的代码中创建颜色变量和组件,并不断迭代。
- 设计不过度工程化: 之后,你可以在 Figma 中创建对应的样式(可能是因为终于找到了一名设计师😂),但不要一开始就陷入组件变体的汪洋大海。先满足当前的设计需求即可。
- 持续迭代: 当你发现一个新的模式被反复使用时(例如设计师的卡片样式),就是时候将它抽象化,沉淀为系统的一部分了。设计系统是一个生命体,它会随着产品的复杂度而自然生长。
对于初创团队而言,设计系统的目标不是为了“拥有一个设计系统”,而是为了更快、更一致地交付高质量的产品。