做产品 PMaker
空格的键盘空格的键盘
设计界面

一套间距

一套间距 | 设计界面 | 做产品

一套间距

页面上所有的间距只从一组固定数值里取。定好之后,间距就不再是每次要做的决定。

你会遇到的现象

  • 页面说不上哪里不对,就是有点乱

  • 两个模块的内边距差 2px,看着别扭但找不到原因

  • 让 AI 改一处间距,它顺手把别处也改了,值还都不一样

随手定的间距会产生一堆相近但不相等的值:11、13、14、15。这些差别小到看不出是故意的,大到能被感觉到,结果就是「有点乱」但说不清哪里乱。

用固定的一组值之后,间距的差别变成了有意义的信号:8 表示紧密相关,24 表示这是两个不同的组。这就是亲密法则在数值上的落地。

怎么定这组数

值用在哪典型场景 4元素内部图标和它的文字之间、标签的内边距 8紧密相关的两项标题和它的正文、表单标签和输入框 16同一组内的条目列表项之间、卡片的内边距 24组与组之间两个区块之间、卡片之间 40 / 64大区块和页面边距页面顶部留白、章节之间

基数取 4 或 8 都行,关键是全站只有一套。取 4 的倍数更灵活,取 8 的倍数更整齐;移动端因为屏幕小,通常用 4 起步。

五到六个值就够用。多了等于没定,因为总能找到一个「差不多合适」的;少了会不够用,被迫破例。

同样五个元素,间距取值不同,读出来的关系就不同

随手定的

↕ 13

↕ 11

↕ 15

↕ 14

差别小到看不出是故意的,大到能被感觉到 结果就是「有点乱」,但说不清哪里乱

一套固定值

↕ 8

↕ 8

↕ 24

↕ 8

8 表示紧密相关,24 表示这是两个不同的组 间距的差别变成了有意义的信号

相邻两级至少差 1.5 倍:8 和 24 一眼能看出来,8 和 12 就模糊了。竖向间距比横向更要紧,人是纵向扫页面的。

这就是亲密法则在数值上的落地:间距不只是好看,它在表达从属关系。五到六个值就够用——多了等于没定,因为总能找到一个「差不多合适」的。

怎么用

  • **间距差要能表达关系。**相邻两级之间至少差 1.5 倍,8 和 24 的差别一眼能看出来,8 和 12 就模糊了。

  • **竖向间距比横向更重要。**人是纵向扫页面的,纵向的节奏乱了最容易被感知。

  • **写成变量,不要写死。**定义成 CSS 变量或设计令牌,改一次全站生效。

  • **破例要有理由。**确实需要一个不在表里的值时,先想想是不是层级关系没理清。

给 AI 的话

复制 CLAUDE.md · 间距规范

## 间距

全站间距只能取这组值,不允许出现其他数字:
4 / 8 / 16 / 24 / 40 / 64(单位 px)

用法:
- 4 元素内部,比如图标和文字之间
- 8 紧密相关的两项,比如标题和它的正文
- 16 同组条目之间、卡片内边距
- 24 组与组之间、卡片之间
- 40 / 64 大区块之间、页面上下边距

要求:
- 定义成 CSS 变量(--sp-1 到 --sp-6),
 组件里引用变量,不要写具体数值。
- 如果某处你认为需要表里没有的值,先告诉我原因,
 不要自己取一个中间值。
- 已有代码里出现表外的间距值时,主动指出来。

最后一条挺有用。让 AI 顺手做体检,比你自己逐个查快得多。

接着看

视觉层级从哪来 间距是亲密法则的具体数值。相关的靠近、不相关的拉开,靠的就是这组数。

建一份最小设计系统 间距是四组变量之一。颜色、间距、字号、圆角,定完就能管住整个项目。

留白优先 有了这组数,删掉分割线之后才知道该用多大的空间去替代它。