做产品 PMaker
每处现拍一个
项目详情
改稿记录
11 · 7 · 13 · 9 · 6 · 15
全部来自同一组
项目详情
改稿记录
8 · 8 · 24 · 8 · 8 · 16

右边只用了 8、16、24 三个值。差别不在某一处,在整体的秩序感。

一套间距

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

你会遇到的现象
  • 页面说不上哪里不对,就是有点乱
  • 两个模块的内边距差 2px,看着别扭但找不到原因
  • 让 AI 改一处间距,它顺手把别处也改了,值还都不一样

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

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

怎么定这组数

用在哪典型场景
4元素内部图标和它的文字之间、标签的内边距
8紧密相关的两项标题和它的正文、表单标签和输入框
16同一组内的条目列表项之间、卡片的内边距
24组与组之间两个区块之间、卡片之间
40 / 64大区块和页面边距页面顶部留白、章节之间
基数取 4 或 8 都行,关键是全站只有一套。取 4 的倍数更灵活,取 8 的倍数更整齐;移动端因为屏幕小,通常用 4 起步。

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

怎么用

给 AI 的话

CLAUDE.md · 间距规范
## 间距

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

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

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

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