1. DESIGN.md 是什么
DESIGN.md 可以理解为一个项目的“设计说明书”,也可以理解为写给人和 AI 的“界面风格约束文档”。
在传统软件开发中,我们经常会看到这些文档:
README.md:告诉别人这个项目是什么、怎么安装、怎么运行。CONTRIBUTING.md:告诉别人怎么参与贡献、代码规范是什么、提交 PR 要注意什么。CHANGELOG.md:记录项目每个版本做了哪些变化。API.md:说明接口如何使用。
而 DESIGN.md 关注的不是代码怎么跑,而是界面应该长什么样、为什么这样设计、不同页面之间如何保持一致、组件应该遵守什么规则、AI 生成页面时不能偏离哪些边界。
一句话概括:
DESIGN.md是把“设计风格、视觉规则、交互原则、组件约束、页面气质”写成 Markdown 的项目级设计规范。
它的核心价值不是“让页面变漂亮”,而是“让页面在长期迭代中仍然保持一致、可控、可沟通、可复用”。
如果没有 DESIGN.md,一个项目很容易出现这些问题:
- 今天生成的页面是圆角卡片风格,明天生成的页面变成大渐变风格。
- 登录页用蓝色,仪表盘用紫色,设置页又变成绿色。
- 按钮有的 36px 高,有的 44px 高,有的圆角 4px,有的圆角 999px。
- 页面文案一会儿像企业官网,一会儿像 SaaS 后台,一会儿像活动落地页。
- AI 每次都重新理解产品,导致输出结果不稳定。
- 开发者不知道一个视觉决定是设计要求,还是某次临时生成出来的偶然结果。
DESIGN.md 要解决的就是这种“风格漂移”和“设计不可复现”的问题。
2. 为什么要学习 DESIGN.md
学习 DESIGN.md 的意义,不只是学会写一个 Markdown 文件,而是学会把“模糊的审美感觉”转化成“可以执行的设计规则”。
很多初学 UI 设计的人,会用这些词描述界面:
- 好看一点。
- 高级一点。
- 简洁一点。
- 科技感一点。
- 像某某产品一样。
- 不要太土。
这些说法在沟通中很常见,但它们有一个致命问题:太抽象,无法稳定执行。
比如“高级一点”到底是什么意思?
- 是更少的颜色?
- 是更大的留白?
- 是更克制的阴影?
- 是更统一的字体层级?
- 是更精细的间距?
- 是更准确的图标?
- 是更少的装饰?
如果不把这些感觉拆开,设计和实现都会变得非常随意。DESIGN.md 的作用,就是把这些抽象要求拆成可检查的规则。
例如不要只写:
界面要简洁高级。更好的写法是:
界面风格应保持克制、清晰、专业:- 页面背景使用接近白色或浅灰色,不使用大面积高饱和渐变。- 主要按钮只保留一个主色,其他按钮使用次级或文本样式。- 卡片圆角控制在 6px 到 8px,避免过度圆润。- 阴影只用于浮层、弹窗和少量强调卡片,不作为主要装饰手段。- 标题层级不超过 3 级,避免页面出现过多不同字号。这段内容就从“审美评价”变成了“设计约束”。人能读,AI 也能执行,开发者也能验证。
3. DESIGN.md 和设计系统的关系
DESIGN.md 不是完整意义上的设计系统,但它可以是设计系统的文字入口。
设计系统通常包括:
- 设计原则:产品整体气质、体验目标、品牌表达。
- 设计变量:颜色、字体、字号、间距、圆角、阴影、层级。
- 组件规范:按钮、输入框、表格、卡片、弹窗、导航、标签等。
- 交互模式:加载、错误、空状态、禁用、提示、确认、撤销。
- 内容规范:按钮文案、错误文案、空状态文案、语气风格。
- 资源规范:图标、插画、图片、品牌标识、动效。
- 实现规范:CSS 变量、Tailwind 配置、组件库、设计 Token。
而 DESIGN.md 通常会用文字方式把这些内容组织起来。它不一定替代 Figma,不一定替代代码中的设计 Token,也不一定替代组件库文档。它更像一个“统一解释层”。
可以这样理解:
| 文件或工具 | 主要作用 |
|---|---|
| Figma | 画出具体界面、组件和视觉稿 |
| 组件库 | 用代码实现可复用 UI 组件 |
| Design Tokens | 把颜色、间距、圆角等设计变量结构化 |
| Storybook | 展示和测试组件状态 |
DESIGN.md | 用文字解释设计方向、规则和使用边界 |
所以 DESIGN.md 最适合承担这些任务:
- 给 AI 生成 UI 时提供稳定上下文。
- 给新加入项目的人快速理解设计风格。
- 给开发者判断“这个页面是否偏离项目气质”。
- 给设计规范提供文字化、版本化、可追踪的记录。
- 在没有完整设计系统时,作为轻量级设计系统使用。
4. DESIGN.md 应该写给谁看
DESIGN.md 不是只写给设计师看的,它至少有四类读者。
4.1 写给自己
个人项目最容易出现的问题是:今天一个想法,明天一个想法,过几天自己都忘了为什么要这样设计。
写 DESIGN.md 可以帮自己固定判断标准。
比如你正在做一个博客后台,如果你写下:
这是一个面向个人写作者的内容管理后台,界面应偏安静、清晰、耐看,不做营销落地页风格。以后当你想加一个超大的渐变 Hero、几个漂浮装饰球、大面积宣传文案时,就能立刻判断:这不符合这个后台产品的气质。
4.2 写给团队成员
团队项目中,设计师、前端、后端、产品经理对“界面应该怎样”往往有不同理解。
DESIGN.md 可以降低沟通成本。例如:
- 产品经理知道页面信息密度应该高还是低。
- 前端知道按钮、表格、卡片的默认样式边界。
- 设计师知道哪些风格是项目明确拒绝的。
- 测试人员知道某些状态是否应该被覆盖。
它不是为了替代沟通,而是为了让沟通有依据。
4.3 写给 AI
现在很多 UI 草图、页面、组件都可以通过 AI 生成。如果没有明确约束,AI 很容易按照自己的默认偏好输出:
- 大标题。
- 大卡片。
- 渐变背景。
- 圆角胶囊按钮。
- 过度装饰。
- 营销页面式布局。
- 不符合业务场景的插画。
这些东西不一定错,但经常不适合后台、工具、管理系统、专业工作流产品。
DESIGN.md 可以告诉 AI:
- 这个产品是什么。
- 用户是谁。
- 页面应该偏工具型还是展示型。
- 应该使用什么视觉语言。
- 不应该出现哪些常见套路。
- 组件应该如何组织。
- 响应式要注意什么。
对于 AI 协作来说,DESIGN.md 的价值非常大。它相当于每次生成 UI 之前都自动提醒 AI:“不要忘记这个项目的设计边界”。
4.4 写给未来维护者
很多项目不是一次做完的,而是会持续维护。半年后再打开项目,很可能已经忘记当初为什么选择这个主色、为什么表格设计得这么紧凑、为什么不使用大卡片。
DESIGN.md 能保存设计决策背后的理由。
如果只保留代码,别人只能看到“现在是什么样”。如果有 DESIGN.md,别人还能看到“为什么应该是这样”。
5. DESIGN.md 的核心组成
一个完整的 DESIGN.md 通常可以包含下面这些部分:
- 产品定位。
- 目标用户。
- 设计目标。
- 视觉气质。
- 品牌与语气。
- 色彩系统。
- 字体与排版。
- 间距与布局。
- 圆角与阴影。
- 图标与图片。
- 组件规范。
- 页面结构。
- 交互状态。
- 响应式规则。
- 可访问性要求。
- 内容文案规范。
- 禁止事项。
- 示例与模板。
不是每个项目都要写得这么全。小项目可以写简化版,大项目可以逐步扩展。
最重要的是:DESIGN.md 不应该写成一堆空话,而应该写成能指导实际输出的规则。
6. 产品定位
产品定位是 DESIGN.md 的第一层基础。没有产品定位,后面的颜色、字号、布局都会失去判断标准。
产品定位要回答:
- 这是一个什么产品?
- 它解决什么问题?
- 它是给谁用的?
- 用户在什么场景下使用?
- 它更像工具、社区、内容站、官网、后台、游戏,还是电商?
一个好的产品定位示例:
本项目是一个面向独立开发者和技术写作者的个人博客系统,核心任务是文章展示、分类浏览、学习笔记沉淀和长期知识管理。界面应强调阅读体验、内容层级和检索效率,不追求强营销感。这段定位里面包含了几个关键信息:
- 用户:独立开发者、技术写作者。
- 场景:博客、学习笔记、知识管理。
- 核心任务:展示、浏览、沉淀、检索。
- 设计倾向:阅读体验优先,不要营销感。
有了这些信息,后面就可以推导出具体规则:
- 字体要适合长文阅读。
- 正文行高不能太挤。
- 分类和目录要清晰。
- 页面不能被过多装饰干扰。
- 不需要夸张 Hero 和销售转化按钮。
如果是一个后台管理系统,定位可能是:
本项目是一个面向运营人员的订单管理后台,用户每天会长时间处理订单、筛选数据、查看异常和批量操作。界面应保持高信息密度、低干扰、强可读性,优先保证效率和准确性。这个定位会推导出完全不同的设计:
- 表格很重要。
- 筛选器要顺手。
- 状态标签要明确。
- 操作按钮不能太花。
- 页面信息密度要比官网高。
所以写 DESIGN.md 的第一步,不是选颜色,而是先把产品讲清楚。
7. 目标用户
目标用户决定了界面复杂度、信息密度、语言风格和交互方式。
如果用户是普通消费者,界面可能需要更直观、更少术语、更强引导。
如果用户是专业人员,界面可以更紧凑、更直接、更强调效率。
如果用户是儿童或低龄用户,字体、颜色、图标、反馈方式都要更友好。
如果用户是开发者,界面可以接受更多专业概念,但也要保持清晰。
在 DESIGN.md 中,可以这样写目标用户:
## 目标用户
- 主要用户:有一定技术背景的个人开发者、学生、技术写作者。- 使用场景:阅读学习笔记、查找技术资料、回顾项目经验。- 用户特点:能够接受技术术语,但不希望界面过度复杂。- 体验重点:阅读舒适、结构清晰、内容查找方便。目标用户最好不要只写“所有人”。因为“所有人”通常意味着没有明确设计方向。
如果真的面向广泛用户,也应该拆成几类:
## 目标用户
- 新用户:第一次访问,需要快速理解网站内容范围。- 常访用户:定期查看新文章,需要快速进入分类和最新内容。- 作者本人:需要长期维护内容,希望文章结构清晰、可复用、易归档。这样后续设计就能兼顾不同路径。
8. 设计目标
设计目标是把产品目标翻译成界面目标。
常见设计目标包括:
- 清晰:用户能快速理解页面内容。
- 高效:用户能用较少步骤完成任务。
- 一致:相同类型内容使用相同表现方式。
- 可读:文字、表格、数据不费眼。
- 克制:不让装饰压过内容。
- 专业:符合目标行业和用户预期。
- 可信:通过稳定布局、合理层级和准确文案建立信任。
设计目标不要写太多,最好 3 到 5 个。太多目标会互相冲突。
例如:
## 设计目标
1. 阅读优先:长文章正文应清晰、舒适,避免过窄或过宽的行长。2. 结构明确:分类、目录、标签、发布时间等信息要有稳定位置。3. 风格克制:不使用强营销页面常见的大面积渐变、夸张动效和复杂装饰。4. 易于扩展:新增文章类型、分类和专题时,不需要重做页面结构。这段内容不仅描述了目标,还暗含了可执行约束。
如果是 SaaS 后台,可以写:
## 设计目标
1. 操作效率优先:常用操作应在首屏或当前工作区内完成。2. 信息密度适中偏高:列表、筛选、详情需要支持快速扫描。3. 状态反馈明确:加载、保存、失败、禁用、空数据都必须有明确状态。4. 视觉表达克制:界面服务于任务,不使用营销式 Hero 和过度装饰。9. 视觉气质
视觉气质是 DESIGN.md 里最容易写空,也最需要写具体的部分。
常见的抽象词包括:
- 简洁。
- 高级。
- 专业。
- 现代。
- 温暖。
- 科技感。
- 活泼。
- 克制。
- 轻量。
这些词可以写,但不能只写这些词。每个词都要落到具体表现。
例如“克制”可以解释成:
- 色彩数量少。
- 不使用大面积高饱和背景。
- 阴影轻。
- 动效短。
- 装饰元素少。
- 文案直接。
“专业”可以解释成:
- 信息层级清楚。
- 表格和表单对齐准确。
- 字号变化有限。
- 图标风格统一。
- 错误提示明确。
- 关键操作有确认或撤销。
“阅读友好”可以解释成:
- 正文字号不小于 16px。
- 行高在 1.7 左右。
- 正文容器不要过宽。
- 标题层级清楚。
- 代码块有明显背景和横向滚动。
- 表格在小屏幕下可滚动。
可以在 DESIGN.md 里用“应该”和“避免”对照写:
## 视觉气质
应该:- 清晰、克制、面向内容。- 使用稳定的版心和明确的标题层级。- 用留白和分隔线组织内容,而不是依赖大量卡片堆叠。- 让正文、代码块、表格成为视觉中心。
避免:- 大面积紫蓝渐变。- 无业务意义的装饰球、模糊光斑和过度阴影。- 所有内容都包在卡片里的页面。- 为了“高级感”牺牲文字对比度。这种写法比“要高级、要简洁”有效得多。
10. 色彩系统
颜色是最容易导致风格失控的部分。DESIGN.md 里应该尽量明确主色、辅助色、中性色和状态色。
一个简化的色彩系统可以这样写:
## 色彩系统
主色:- Primary:#2563EB,用于主要按钮、重要链接、当前导航状态。
中性色:- Text Primary:#111827,用于正文主文本。- Text Secondary:#4B5563,用于辅助说明。- Border:#E5E7EB,用于边框和分隔线。- Surface:#FFFFFF,用于卡片、弹窗、输入框背景。- Page Background:#F8FAFC,用于页面背景。
状态色:- Success:#16A34A,用于成功状态。- Warning:#D97706,用于警告状态。- Error:#DC2626,用于错误状态。- Info:#2563EB,用于信息提示。但只列颜色还不够,还要说明使用规则。
例如:
使用规则:- 主色只用于可交互的关键元素,不用于大面积背景。- 状态色只表达状态,不用于普通装饰。- 正文不使用浅灰色,必须保证可读性。- 同一个页面中高强调色不超过 2 种。- 禁止为了丰富视觉而临时添加新的主题色。颜色系统的关键不是颜色多,而是颜色有明确职责。
10.1 主色
主色代表产品最核心的视觉识别,也通常用于最重要的交互元素。
主色适合用于:
- 主要按钮。
- 当前选中的导航项。
- 文本链接。
- 关键进度。
- 聚焦态边框。
主色不适合滥用于:
- 大面积页面背景。
- 所有图标。
- 所有标题。
- 所有卡片边框。
如果主色到处都是,它就不再能表达重点。
10.2 中性色
中性色是页面真正的骨架。很多界面之所以看起来专业,不是因为主色漂亮,而是因为中性色层级准确。
中性色通常包括:
- 背景色。
- 表面色。
- 主文字色。
- 次级文字色。
- 占位文字色。
- 边框色。
- 分隔线色。
- 禁用态颜色。
一个项目的中性色如果不稳定,会出现这些问题:
- 有些文字太浅,看不清。
- 有些边框太重,页面显得杂。
- 有些卡片背景和页面背景区分不明显。
- 禁用状态和普通状态分不清。
所以 DESIGN.md 应明确中性色的职责。
10.3 状态色
状态色的原则是语义明确。
一般约定:
- 绿色:成功、通过、正常。
- 黄色或橙色:警告、待处理、需要注意。
- 红色:错误、失败、危险、删除。
- 蓝色:信息、提示、进行中。
不要随意改变状态色含义。例如一个页面中红色表示错误,另一个页面中红色表示热门,这会增加认知负担。
11. 字体与排版
排版决定了一个界面是否好读。
DESIGN.md 中至少要写清楚:
- 字体族。
- 基础字号。
- 标题字号。
- 正文字号。
- 行高。
- 字重。
- 链接样式。
- 代码字体。
- 文章内容宽度。
示例:
## 字体与排版
- 中文字体优先使用系统默认无衬线字体。- 英文和数字使用系统 UI 字体。- 代码使用等宽字体,如 JetBrains Mono、Consolas、Menlo。- 正文字号为 16px,行高 1.7。- 辅助文字不小于 13px。- 页面主标题 28px 到 36px,内容区标题按层级递减。- 不使用负字距。- 不使用视口宽度动态缩放正文文字。排版最常见的问题是字号层级太多。
比如一个页面同时出现:
- 12px。
- 13px。
- 14px。
- 15px。
- 16px。
- 18px。
- 20px。
- 22px。
- 24px。
- 28px。
- 32px。
- 40px。
这会让页面显得很乱。更好的做法是建立有限层级:
| 层级 | 用途 | 字号示例 |
|---|---|---|
| Display | 首页主标题、重要专题标题 | 36px |
| H1 | 文章标题、页面标题 | 30px |
| H2 | 一级章节标题 | 24px |
| H3 | 二级章节标题 | 20px |
| Body | 正文 | 16px |
| Small | 辅助信息 | 14px |
| Caption | 标签、说明 | 12px |
对于博客或学习笔记来说,正文排版尤其重要:
- 行长不要过长。桌面端正文容器可以控制在 720px 到 860px。
- 行高不要太小。中文长文建议 1.6 到 1.9。
- 段落之间要有稳定间距。
- 标题上方间距应大于下方间距,让标题和后面的内容形成一组。
- 列表缩进要清晰。
- 代码块和表格要有足够区分。
12. 间距与布局
间距是 UI 设计中非常基础但非常重要的规则。
如果间距没有系统,页面会出现:
- 元素粘在一起。
- 相同关系的元素距离不一致。
- 不同模块之间层级不清。
- 卡片内部拥挤。
- 页面整体松散或紧张。
常见的间距系统是 4px 或 8px 倍数。
例如:
## 间距系统
基础单位使用 4px。
- 4px:图标与文本之间的细小间距。- 8px:同组紧密元素之间的间距。- 12px:表单控件内部或紧密列表间距。- 16px:普通组件内部 padding。- 24px:卡片之间、表单组之间。- 32px:页面模块之间。- 48px:大章节之间。间距的核心原则是:关系越近,距离越近;关系越远,距离越远。
例如:
- 按钮图标和按钮文字是强相关,间距可以是 6px 或 8px。
- 表单 label 和输入框是强相关,间距可以是 6px 或 8px。
- 一个表单项和下一个表单项是同组关系,间距可以是 16px。
- 表单区域和提交按钮区域是不同功能区,间距可以是 24px。
- 页面头部和主体内容是大区域,间距可以是 32px。
12.1 页面布局
DESIGN.md 还应该说明页面布局方式。
比如博客网站:
## 页面布局
- 内容页使用单栏正文为主,必要时添加右侧目录。- 桌面端正文最大宽度控制在 860px 左右。- 移动端正文左右留白不少于 16px。- 列表页可以使用两栏或三栏,但卡片内容必须保持标题、摘要、日期、标签顺序一致。- 不把所有页面模块都做成浮动卡片,优先使用清晰的内容分区。比如后台系统:
## 页面布局
- 桌面端使用左侧导航 + 顶部工具栏 + 主内容区。- 主内容区优先承载表格、筛选器和详情面板。- 筛选区域应靠近数据列表,避免用户上下滚动查找条件。- 常用操作放在列表上方右侧,危险操作放在行内或二次确认中。- 页面不使用营销式 Hero 布局。不同产品的布局规则差异很大,所以必须根据产品定位来写。
13. 圆角、边框与阴影
圆角、边框和阴影决定了界面的“硬朗”或“柔和”程度。
常见问题:
- 所有元素都是超大圆角,导致专业工具像娱乐应用。
- 阴影太重,页面像浮在背景上。
- 边框颜色太深,页面显得脏。
- 同一项目里卡片圆角 4px、按钮 16px、弹窗 24px,缺乏统一规则。
可以在 DESIGN.md 里这样写:
## 圆角
- 小控件圆角:4px。- 按钮、输入框、标签:6px。- 卡片、弹窗、下拉面板:8px。- 不使用 999px 胶囊圆角,除非是标签、开关或头像。## 边框
- 默认边框颜色为 #E5E7EB。- 输入框聚焦时使用主色边框。- 卡片优先使用细边框或背景区分,不依赖重阴影。## 阴影
- 常规页面组件不使用明显阴影。- 阴影主要用于弹窗、下拉菜单、悬浮工具条等浮层。- 阴影应轻,不制造强烈漂浮感。对于后台、工具、知识库这类产品,轻边框通常比重阴影更稳定。
14. 图标、图片与插画
图标和图片不是装饰品,它们应该服务于识别和理解。
DESIGN.md 可以写:
## 图标
- 图标用于辅助识别操作,不单独承载复杂含义。- 同一页面使用统一线宽和风格的图标。- 工具按钮优先使用常见图标,如搜索、添加、编辑、删除、保存、下载。- 不使用多个图标库混搭。- 只有图标按钮时必须提供可访问名称或 tooltip。图片和插画的规则要根据产品类型决定。
对于博客:
## 图片
- 文章配图应与内容主题直接相关。- 不使用纯装饰性图片填充内容。- 图片下方可以添加简短说明。- 技术文章中的截图应清晰,避免压缩导致文字不可读。对于官网:
## 图片
- 首页首屏应展示真实产品、真实场景或高相关视觉,不使用空泛抽象图。- 图片不能遮挡主要文案。- 产品截图应能看清界面内容,而不是只作为模糊背景。对于后台:
## 图片
- 后台系统不以插画作为主要视觉语言。- 空状态可以使用轻量插画,但不能占据过大空间。- 操作区和数据区优先于装饰图。15. 组件规范
组件规范是 DESIGN.md 中最接近前端实现的部分。
常见组件包括:
- Button 按钮。
- Input 输入框。
- Select 下拉选择。
- Checkbox 复选框。
- Radio 单选框。
- Switch 开关。
- Tabs 标签页。
- Table 表格。
- Card 卡片。
- Modal 弹窗。
- Toast 提示。
- Tooltip 气泡提示。
- Badge 标签。
- Navbar 导航。
- Sidebar 侧边栏。
组件规范要说明:
- 什么时候使用。
- 有哪些类型。
- 默认尺寸是什么。
- 状态有哪些。
- 文案怎么写。
- 禁止怎么用。
15.1 按钮
按钮规范示例:
## Button
类型:- Primary:页面主操作,一个区域内最多一个。- Secondary:次要操作。- Ghost/Text:低强调操作。- Danger:删除、停用、不可逆操作。
尺寸:- Small:高度 32px,用于表格行内操作。- Medium:高度 40px,用于常规表单和页面操作。- Large:高度 48px,用于移动端主要操作或少量重点页面。
状态:- Default。- Hover。- Active。- Focus。- Disabled。- Loading。
使用规则:- 主要按钮文案使用动词,如“保存”“发布”“新建文章”。- 同一操作区只能有一个最强按钮。- 危险操作不能使用主色按钮。- Loading 状态应防止重复提交。按钮最常见的问题是主次不分。一个页面上如果有五个颜色很重的按钮,用户就不知道哪个最重要。
15.2 输入框
输入框规范示例:
## Input
- 输入框高度默认 40px。- Label 放在输入框上方,复杂表单不使用仅 placeholder 作为说明。- Placeholder 只用于示例,不替代字段名称。- 错误信息显示在输入框下方,使用明确文案说明如何修正。- 必填项可以用标记提示,但不要让页面充满红色星号。- 禁用态要明显区别于只读态。输入框的关键是减少用户出错,并在出错后告诉用户怎么改。
15.3 表格
表格是后台系统和数据工具中非常重要的组件。
## Table
- 表头文字简短清晰。- 数字列右对齐,文本列左对齐。- 状态列使用语义颜色和标签。- 行内操作放在最右侧。- 批量操作只在用户选择行后出现。- 空数据、加载中、加载失败都必须有状态。- 移动端表格应支持横向滚动或改为列表布局。表格设计的重点不是“好看”,而是“能快速扫描、比较和操作”。
15.4 卡片
卡片很常用,但也很容易被滥用。
## Card
- 卡片用于承载一组相对独立的信息。- 不把页面每一个区块都包成卡片。- 卡片内部应有清晰标题、主体内容和可选操作。- 卡片之间间距保持一致。- 卡片圆角默认 8px,边框使用浅色。- 不在卡片里再嵌套多个卡片,除非是明确的列表项。卡片的作用是分组,而不是装饰。没有分组意义时,不一定需要卡片。
15.5 弹窗
弹窗规范示例:
## Modal
- 弹窗用于需要用户立即处理的任务,如确认、编辑、创建。- 弹窗标题必须明确说明任务。- 主要操作放在右下角,取消操作在其左侧。- 危险确认要使用清晰文案,不只写“确定”。- 弹窗内容过长时,应考虑独立页面或抽屉。- 关闭弹窗不能导致用户已输入内容意外丢失。弹窗的核心是打断用户,所以必须有充分理由。
16. 页面结构规范
组件是局部规则,页面结构是整体规则。
DESIGN.md 可以定义常见页面的结构模板。
例如文章详情页:
## 文章详情页
结构:1. 页面标题。2. 文章元信息:日期、分类、标签。3. 可选目录。4. 正文内容。5. 相关文章或上一篇/下一篇。
规则:- 正文是视觉中心。- 目录不能遮挡正文。- 标题和正文之间保持足够呼吸感。- 代码块、表格、图片必须适配移动端。文章列表页:
## 文章列表页
结构:1. 页面标题。2. 分类或标签筛选。3. 文章列表。4. 分页或加载更多。
文章列表项包含:- 标题。- 摘要。- 发布日期。- 分类和标签。
规则:- 标题优先级高于摘要。- 列表项之间要有明确分隔。- 不使用过大的封面图压缩信息密度。后台列表页:
## 后台列表页
结构:1. 页面标题和主要操作。2. 筛选区。3. 数据表格。4. 分页。5. 批量操作区。
规则:- 筛选条件应靠近表格。- 主操作放在标题行或表格工具栏。- 表格列顺序应按用户判断顺序排列。- 错误和空状态不应该让页面崩掉。页面结构规范能让不同页面保持同一种思考方式。
17. 交互状态
很多界面看起来完整,但一到真实使用就出问题,是因为缺少状态设计。
DESIGN.md 必须提醒这些状态:
- Loading:加载中。
- Empty:空数据。
- Error:加载失败。
- Success:操作成功。
- Disabled:禁用。
- Hover:悬停。
- Focus:聚焦。
- Active:按下。
- Selected:选中。
- Skeleton:骨架屏。
- Pending:等待处理。
- Offline:离线或网络异常。
可以这样写:
## 交互状态
- 所有异步操作必须有加载状态。- 表单提交时按钮进入 loading,并禁止重复提交。- 数据为空时显示空状态,说明当前没有什么,以及用户下一步可以做什么。- 错误状态要说明错误原因和恢复方式。- 删除、发布、停用等关键操作需要二次确认或可撤销机制。- 键盘聚焦状态必须可见。状态设计是可用性的关键。
一个按钮不只是有默认样式,还至少应该有:
- 默认状态。
- 悬停状态。
- 点击状态。
- 聚焦状态。
- 禁用状态。
- 加载状态。
一个列表不只是有数据时的样子,还应该有:
- 首次加载。
- 加载失败。
- 数据为空。
- 筛选无结果。
- 分页加载。
- 局部刷新。
很多 AI 生成页面只生成“理想状态”,DESIGN.md 要明确要求补齐真实状态。
18. 响应式规则
响应式不是简单地把桌面页面缩小到手机上。
DESIGN.md 应该说明不同屏幕下的布局变化。
例如:
## 响应式规则
桌面端:- 使用最大宽度容器,保持正文可读。- 可以显示侧边目录、筛选栏或辅助信息。
平板端:- 减少多栏布局,保留主要内容和关键操作。- 表格可以横向滚动。
移动端:- 使用单栏布局。- 导航折叠为菜单。- 卡片和列表占满可用宽度。- 表格改为横向滚动或摘要列表。- 点击目标不小于 44px。响应式设计要重点关注:
- 文本是否溢出。
- 按钮是否太小。
- 表格是否挤压。
- 导航是否可用。
- 弹窗是否超出屏幕。
- 固定定位元素是否遮挡内容。
- 图片是否变形。
对于博客文章,移动端尤其要注意:
- 代码块横向滚动。
- 表格横向滚动。
- 长英文链接换行。
- 图片宽度自适应。
- 目录不要遮挡正文。
19. 可访问性
可访问性不是额外加分项,而是基础质量。
DESIGN.md 可以写:
## 可访问性
- 正文和背景必须有足够对比度。- 交互元素必须支持键盘访问。- 图标按钮必须有可访问名称。- 表单错误不能只依赖颜色表达。- 链接文字应能说明目的,避免大量“点击这里”。- 图片需要根据情况提供 alt 文本。- 焦点状态必须可见。常见可访问性问题:
- 浅灰字太浅。
- 红色错误只用颜色表示,没有文字说明。
- 只有图标没有文字,也没有 aria-label。
- 弹窗打开后焦点没有进入弹窗。
- 键盘无法操作菜单。
- 图片缺少说明。
- 字号太小。
可访问性也是设计规范的一部分,不应该只交给开发最后补。
20. 内容文案规范
文案也是界面设计的一部分。
不同产品的语气不同:
- 后台系统:直接、准确、少情绪。
- 消费 App:友好、自然、轻松。
- 金融产品:严谨、可信、避免夸张。
- 开发者工具:准确、简洁、尊重专业用户。
- 博客:清晰、有结构、便于长期阅读。
可以在 DESIGN.md 中写:
## 文案语气
- 使用简洁、直接、可理解的表达。- 按钮文案优先使用动词,如“保存”“发布”“下载”。- 错误信息说明问题和解决方法。- 避免空泛营销词,如“极致”“颠覆”“赋能”。- 技术内容可以使用专业术语,但首次出现时应有解释。按钮文案示例:
| 不推荐 | 推荐 |
|---|---|
| 确定 | 保存修改 |
| 提交 | 发布文章 |
| 操作 | 批量归档 |
| 失败 | 保存失败,请重试 |
错误文案也要具体。
不推荐:
出错了。推荐:
文章保存失败,请检查网络后重试。更好的文案会降低用户的不确定感。
21. 禁止事项
DESIGN.md 里非常值得写“不要做什么”。
因为 AI 或团队成员经常会默认加入一些看起来流行但不适合项目的设计。
例如:
## 禁止事项
- 不使用大面积紫蓝渐变作为默认背景。- 不使用无意义的装饰球、光斑、模糊背景。- 不把工具型页面做成营销落地页。- 不在一个页面中混用多个图标风格。- 不为了视觉丰富随意增加颜色。- 不使用过小字号承载关键内容。- 不用 placeholder 替代表单 label。- 不让按钮文字换行或溢出。- 不在卡片内部继续嵌套大量卡片。- 不只设计有数据的理想状态,必须考虑空、错、加载、禁用状态。禁止事项的作用是设边界。边界越清晰,输出越稳定。
22. DESIGN.md 的简化模板
小项目不需要一开始写很复杂。可以先用简化模板。
## 产品定位
这是一个面向什么用户、解决什么问题的产品。
## 目标用户
- 用户是谁。- 使用场景是什么。- 用户最关心什么。
## 设计目标
1. 目标一。2. 目标二。3. 目标三。
## 视觉气质
应该:- ...- ...
避免:- ...- ...
## 色彩
- 主色:...- 背景色:...- 正文色:...- 边框色:...- 成功/警告/错误色:...
## 字体与排版
- 正文字号:...- 标题层级:...- 行高:...- 代码字体:...
## 间距与布局
- 基础间距单位:...- 页面版心:...- 移动端规则:...
## 组件规则
### Button
### Input
### Card
### Table
### Modal
## 状态
- Loading。- Empty。- Error。- Disabled。- Focus。
## 文案
- 语气。- 按钮文案。- 错误文案。
## 禁止事项
- ...- ...这个模板适合个人项目、课程项目、AI 生成 UI 项目、早期产品原型。
23. DESIGN.md 的进阶模板
如果项目更复杂,可以使用进阶模板。
## 1. Overview
### 1.1 Product### 1.2 Users### 1.3 Core Scenarios### 1.4 Design Principles
## 2. Brand
### 2.1 Personality### 2.2 Tone of Voice### 2.3 Visual Direction
## 3. Foundations
### 3.1 Colors### 3.2 Typography### 3.3 Spacing### 3.4 Radius### 3.5 Shadow### 3.6 Iconography### 3.7 Motion
## 4. Layout
### 4.1 Grid### 4.2 Page Width### 4.3 Navigation### 4.4 Responsive Breakpoints
## 5. Components
### 5.1 Button### 5.2 Form Controls### 5.3 Table### 5.4 Card### 5.5 Modal### 5.6 Toast### 5.7 Tabs### 5.8 Navigation
## 6. Patterns
### 6.1 Loading### 6.2 Empty State### 6.3 Error Handling### 6.4 Confirmation### 6.5 Search and Filter### 6.6 Create/Edit Flow
## 7. Content
### 7.1 Voice### 7.2 Button Labels### 7.3 Error Messages### 7.4 Empty State Messages
## 8. Accessibility
## 9. Do and Don't
## 10. Examples进阶模板的重点是把“基础变量”“组件”“模式”分开。
- 基础变量解决颜色、字体、间距。
- 组件解决单个控件怎么长。
- 模式解决多个组件组合后的用户流程。
24. 给博客项目写 DESIGN.md 的示例
下面是一个适合个人技术博客的 DESIGN.md 示例。
## 产品定位
这是一个个人技术博客,用于记录学习笔记、项目经验、UI 设计学习、前端开发和 AI 编程实践。网站的核心价值是长期沉淀内容,而不是短期营销转化。
## 目标用户
- 作者本人:用于整理长期学习记录。- 技术学习者:阅读教程、笔记和经验总结。- 访问者:通过分类、标签和文章列表快速找到感兴趣内容。
## 设计目标
1. 阅读舒适:长文内容应清晰、稳定、适合长时间阅读。2. 结构清楚:分类、标题、目录、代码块和表格层级明确。3. 风格克制:视觉为内容服务,不用强装饰抢占注意力。4. 易维护:新增文章和分类不需要额外设计调整。
## 视觉气质
应该:- 清晰、安静、耐看。- 以正文内容为中心。- 使用稳定的版心和充足行高。- 用标题、列表、表格和代码块组织知识。
避免:- 营销落地页风格。- 大面积渐变背景。- 无意义装饰图形。- 过多卡片嵌套。
## 排版
- 正文字号不小于 16px。- 中文正文行高建议 1.7。- 文章正文最大宽度控制在适合阅读的范围。- 标题上方间距大于下方间距。- 代码使用等宽字体,并提供明显背景。
## 内容组件
### 文章列表
- 标题优先。- 摘要简短。- 显示日期、分类和标签。- 列表项之间保持稳定分隔。
### 文章详情
- 标题、日期、分类应位于正文前。- 正文段落间距稳定。- 表格需要清晰边框。- 代码块支持横向滚动。
### 导航
- 导航项命名简短。- 当前页面状态明确。- 移动端导航不能遮挡正文。
## 状态
- 图片加载失败时不应影响正文阅读。- 长代码块和宽表格在移动端横向滚动。- 链接悬停状态要明显。
## 文案
- 技术概念尽量解释清楚。- 标题准确描述内容,不做夸张标题党。- 学习笔记可以使用分层编号,方便回顾。这个示例不是为了追求“炫”,而是为了让博客长期稳定。
25. 给后台管理系统写 DESIGN.md 的示例
后台管理系统和博客完全不同,它更强调效率、准确性和状态反馈。
## 产品定位
这是一个面向运营人员和管理员的后台管理系统,主要用于查看数据、处理订单、管理用户、配置内容和追踪异常。
## 目标用户
- 运营人员:每天高频使用,需要快速筛选、查看和处理数据。- 管理员:需要配置系统、管理权限和查看关键指标。- 客服人员:需要快速定位用户问题。
## 设计目标
1. 高效:常用操作路径短。2. 清晰:数据状态和操作结果明确。3. 稳定:页面结构可预测,不频繁变化。4. 可扫描:表格、标签、筛选器便于快速比较。
## 视觉气质
应该:- 专业、克制、工作导向。- 信息密度适中偏高。- 视觉重点服务于状态和操作。
避免:- 大面积插画。- 营销式首屏。- 低信息密度的大卡片堆叠。- 过度圆角和强阴影。
## 布局
- 桌面端使用侧边导航。- 顶部区域放置页面标题、面包屑和主要操作。- 筛选区放在表格上方。- 表格是列表页主要内容。- 详情信息可以使用抽屉或独立详情页。
## 表格
- 文本左对齐,数字右对齐。- 状态使用标签展示。- 操作列固定在最右侧。- 支持加载、空数据、错误、筛选无结果状态。- 批量操作在选择数据后出现。
## 表单
- label 放在输入框上方。- 错误提示紧跟字段。- 保存按钮进入 loading 后禁止重复提交。- 离开未保存表单时需要提醒。
## 操作反馈
- 成功使用 toast。- 危险操作使用确认弹窗。- 长耗时任务显示进度或后台处理状态。- 错误信息说明原因和下一步。这个版本的关键词是“工作导向”。如果后台做得像官网,就会牺牲效率。
26. 给 AI 使用 DESIGN.md 的方法
如果 DESIGN.md 是给 AI 使用的,写法要更明确、更直接。
AI 不擅长猜测隐含偏好,所以要给它清楚边界:
- 你要做什么。
- 你不要做什么。
- 页面属于什么类型。
- 优先级是什么。
- 哪些东西必须出现。
- 哪些风格禁止出现。
可以在提示词中这样使用:
请根据项目中的 DESIGN.md 生成一个文章列表页。必须遵守其中的视觉气质、排版、颜色、组件和响应式规则。不要生成营销落地页,不要使用大面积渐变背景,不要添加无意义装饰。如果是让 AI 修改页面,可以写:
请检查当前页面是否符合 DESIGN.md。重点检查:1. 颜色是否超出规范。2. 字号和间距是否混乱。3. 是否滥用卡片、圆角和阴影。4. 是否缺少 loading、empty、error 状态。5. 移动端是否存在文字溢出和布局挤压。如果是让 AI 生成组件,可以写:
请根据 DESIGN.md 实现 Button 组件。组件需要包含 primary、secondary、ghost、danger 四种类型,以及 disabled、loading、focus 状态。请不要临时创造新的颜色和圆角。给 AI 用的 DESIGN.md 要注意两点:
第一,规则要具体。不要只写“美观大方”,要写颜色、间距、圆角、层级。
第二,禁止事项要明确。AI 很容易默认加入流行设计套路,所以“不做什么”非常重要。
27. DESIGN.md 和代码实现如何连接
DESIGN.md 如果只停留在文字层面,长期会和代码脱节。更好的方式是把它和代码中的变量、组件、测试连接起来。
27.1 对应 CSS 变量
例如 DESIGN.md 中写:
Primary:#2563EBBorder:#E5E7EBRadius Medium:8px代码中可以对应:
:root { --color-primary: #2563eb; --color-border: #e5e7eb; --radius-md: 8px;}这样设计文档和代码变量就能互相对应。
27.2 对应 Tailwind 配置
如果项目使用 Tailwind,可以把设计变量写入 tailwind.config.js:
theme: { extend: { colors: { primary: "#2563eb", border: "#e5e7eb" }, borderRadius: { md: "8px" } }}然后在 DESIGN.md 中说明:不要绕过这些 token 临时写新颜色。
27.3 对应组件库
组件库是 DESIGN.md 的执行层。
例如:
DESIGN.md规定按钮类型。Button.tsx实现按钮类型。- Storybook 展示按钮状态。
- 测试保证 loading 和 disabled 状态正确。
这样文档才不会变成空架子。
27.4 对应代码评审
代码评审时可以把 DESIGN.md 当作检查清单:
- 有没有引入未定义颜色?
- 有没有新增不一致的圆角?
- 页面是否缺少状态?
- 文案是否准确?
- 响应式是否处理?
- 组件是否复用已有规范?
这能让 UI 评审从“我觉得不好看”变成“这里不符合规范第 X 条”。
28. DESIGN.md 的维护方法
DESIGN.md 不是一次写完就不管的文件。它应该随着项目演进。
28.1 从小开始
不要一开始追求完美。可以先写:
- 产品定位。
- 设计目标。
- 颜色。
- 字体。
- 组件基本规则。
- 禁止事项。
项目变复杂后再补充表格、弹窗、状态、响应式。
28.2 和真实页面一起更新
当你新增一个重要页面时,如果出现新模式,就应该更新 DESIGN.md。
比如第一次加入“批量操作”,就补充批量操作规则。
第一次加入“文章目录”,就补充目录规则。
第一次加入“暗色模式”,就补充暗色模式规则。
28.3 避免写成愿望清单
不好的写法:
界面要美观、现代、简洁、好用、高级、有科技感。这像愿望清单,不像设计规范。
好的写法:
页面背景使用浅灰,内容区使用白色表面。主按钮使用蓝色,其他按钮使用次级样式。卡片圆角 8px,阴影只用于弹窗和下拉菜单。正文不小于 16px,行高不小于 1.6。28.4 保持可执行
每条规则最好能被检查。
例如:
- “主按钮一个区域内最多一个”可以检查。
- “正文字号不小于 16px”可以检查。
- “不使用大面积渐变背景”可以检查。
- “页面要高级”无法检查。
可检查的规则才适合长期维护。
29. 常见错误
29.1 只写审美词,不写规则
错误示例:
整体风格简洁大气,高端专业。问题是没有任何执行细节。
改进:
整体风格克制、专业。页面背景使用浅灰或白色;主色只用于关键操作;卡片圆角 8px;阴影只用于浮层;标题层级不超过 3 级;正文对比度必须保证长时间阅读。29.2 写得太大,没人执行
如果一个 DESIGN.md 一开始就写几十页,但没有和项目关联,很可能没人看。
更好的方式是先写最影响一致性的部分:
- 色彩。
- 字体。
- 间距。
- 按钮。
- 表单。
- 页面气质。
- 禁止事项。
29.3 没有说明适用场景
有些规则不是所有页面都适用。
例如“信息密度高”适合后台,但不一定适合官网。
所以要写清楚:
- 哪些规则适用于所有页面。
- 哪些规则适用于后台。
- 哪些规则适用于文章页。
- 哪些规则适用于营销页。
29.4 文档和代码脱节
文档写主色是蓝色,代码里到处是紫色、绿色、橙色,这说明规范没有落地。
解决方法:
- 把颜色写成 CSS 变量。
- 组件统一使用 token。
- 新增颜色需要更新文档。
- 代码评审检查设计一致性。
29.5 只设计静态页面,不设计状态
很多文档只写默认界面,不写加载、失败、空数据、禁用。
真实产品中,状态比静态页面更重要。
DESIGN.md 应明确要求:
- 所有列表有空状态。
- 所有异步操作有 loading。
- 所有失败有错误提示。
- 所有表单有校验状态。
- 所有危险操作有确认或撤销。
30. 学习 DESIGN.md 的方法
学习 DESIGN.md 可以按四步走。
30.1 先看产品类型
先判断产品是什么:
- 博客。
- 官网。
- 后台。
- 工具。
- 电商。
- 社区。
- App。
- 游戏。
产品类型不同,设计规则完全不同。
不要把后台做成官网,也不要把博客做成数据看板。
30.2 再看用户任务
用户来这里做什么?
- 阅读?
- 搜索?
- 管理?
- 购买?
- 创建?
- 比较?
- 监控?
- 娱乐?
任务决定页面优先级。
阅读任务需要排版。管理任务需要表格和表单。购买任务需要商品展示和转化路径。监控任务需要状态和异常提示。
30.3 然后拆基础变量
基础变量包括:
- 颜色。
- 字体。
- 字号。
- 行高。
- 间距。
- 圆角。
- 阴影。
- 图标。
这些是界面一致性的基础。
30.4 最后写组件和模式
组件是一个个 UI 零件,模式是多个组件组成的流程。
例如:
- 搜索 + 筛选 + 表格 = 数据查询模式。
- 表单 + 校验 + 保存 = 编辑模式。
- 删除按钮 + 确认弹窗 + 成功提示 = 危险操作模式。
只写组件还不够,还要写这些组件如何组合完成任务。
31. 一份高质量 DESIGN.md 的判断标准
可以用下面的清单判断一份 DESIGN.md 是否合格。
31.1 是否讲清楚产品
- 是否说明产品是什么?
- 是否说明用户是谁?
- 是否说明核心场景是什么?
- 是否说明设计优先级是什么?
31.2 是否能指导视觉
- 是否有颜色规则?
- 是否有字体和排版规则?
- 是否有间距和布局规则?
- 是否有圆角、边框、阴影规则?
- 是否说明图片和图标如何使用?
31.3 是否能指导组件
- 是否说明按钮类型和状态?
- 是否说明表单规则?
- 是否说明表格规则?
- 是否说明卡片、弹窗、提示等组件?
- 是否说明组件的使用边界?
31.4 是否覆盖真实状态
- 是否包含 loading?
- 是否包含 empty?
- 是否包含 error?
- 是否包含 disabled?
- 是否包含 focus?
- 是否包含移动端?
31.5 是否有明确禁止事项
- 是否说明不应该使用哪些风格?
- 是否限制滥用颜色、圆角、阴影?
- 是否避免与产品气质不匹配的布局?
31.6 是否能被执行和检查
- 规则是否具体?
- 是否能落到代码变量?
- 是否能用于代码评审?
- AI 是否能根据它稳定生成类似风格的页面?
32. 总结
DESIGN.md 的本质不是“多写一个文档”,而是把设计判断显性化。
它让项目从“凭感觉设计”变成“按规则设计”,从“每次重新解释”变成“长期共享上下文”,从“页面各做各的”变成“风格稳定统一”。
对于个人学习来说,写 DESIGN.md 可以训练自己把审美拆成结构化规则。
对于团队协作来说,写 DESIGN.md 可以减少反复沟通,让设计、产品、开发有共同依据。
对于 AI 编程和 AI 生成 UI 来说,写 DESIGN.md 几乎是必要的。因为 AI 默认会补很多它认为合理的设计,而 DESIGN.md 可以告诉它:这个项目真正需要什么,以及哪些东西不能出现。
可以记住这句话:
好的
DESIGN.md不是描述“页面要好看”,而是定义“什么样的页面才算符合这个项目”。
学习 DESIGN.md,最终学到的不是 Markdown 写法,而是一种把设计经验沉淀成工程规则的能力。
如果这篇文章对你有帮助,欢迎分享给更多人!
部分信息可能已经过时