跳到主内容
UniKit

间距系统

用基准单位与步进规则(线性 / 倍数 / Fibonacci / 4px 网格)生成间距阶梯,输出 --space-* 变量与 px / rem 对照表,另附常用用法示例。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

间距设置

第 n 档的间距由步进规则决定:线性 base × n、倍数 base × 2^(n-1)、Fibonacci base × fib(n)、网格把 base × n 吸附到网格单位上。0 档固定是 0。

实时预览

预览按当前间距渲染,方块之间的间隔就是对应变量的值。

步进公式:space(n) = 4px × n

间距示例间距示例间距示例
--space-0
0px
--space-1
4px
--space-2
8px
--space-3
12px
--space-4
16px
--space-5
20px
--space-6
24px
--space-7
28px
--space-8
32px

结果

档位变量pxrem
0--space-000
1--space-140.25
2--space-280.5
3--space-3120.75
4--space-4161
5--space-5201.25
6--space-6241.5
7--space-7281.75
8--space-8322
完整 CSS
:root {
  --space-0: 0; /* 0rem */
  --space-1: 4px; /* 0.25rem */
  --space-2: 8px; /* 0.5rem */
  --space-3: 12px; /* 0.75rem */
  --space-4: 16px; /* 1rem */
  --space-5: 20px; /* 1.25rem */
  --space-6: 24px; /* 1.5rem */
  --space-7: 28px; /* 1.75rem */
  --space-8: 32px; /* 2rem */
}

/* usage */
.stack {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.section {
  padding-block: var(--space-8);
  padding-inline: var(--space-2);
}
CSS 变量
:root {
  --space-0: 0; /* 0rem */
  --space-1: 4px; /* 0.25rem */
  --space-2: 8px; /* 0.5rem */
  --space-3: 12px; /* 0.75rem */
  --space-4: 16px; /* 1rem */
  --space-5: 20px; /* 1.25rem */
  --space-6: 24px; /* 1.5rem */
  --space-7: 28px; /* 1.75rem */
  --space-8: 32px; /* 2rem */
}
用法示例
/* usage */
.stack {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}
.section {
  padding-block: var(--space-8);
  padding-inline: var(--space-2);
}

这个工具能做什么

  • 给设计系统定间距阶梯:基准 4px 配线性规则适合紧凑的界面,基准 8px 配 Fibonacci 适合需要明显层次的大页面。
  • 把散落在样式表里的 3px、7px、13px 收敛到一套 --space-* 变量上,改版时只调基准单位,全站间距一起变。
  • 做 4px / 8px 网格对齐:用网格吸附规则把任意基准单位吸附到网格倍数,避免出现半像素或非网格值。
  • 给组件库写文档时直接贴出 px / rem 对照表,让设计和开发对同一个 token 的理解保持一致。

示例

输入

基准单位 4px、线性规则、8 档、根字号 16px、包含 0 档

输出

公式 space(n) = 4px × n;变量 --space-0: 0(0rem)、--space-1: 4px(0.25rem)、--space-2: 8px(0.5rem)、--space-3: 12px(0.75rem)、--space-4: 16px(1rem)… 直到 --space-8: 32px(2rem)

用法示例里 .stack 用 gap: var(--space-2)、.section 用 padding-block: var(--space-8)。

常见问题

线性、倍数、Fibonacci 该选哪个?

线性适合档位多但跨度小的界面(4px 或 8px 步进),值可预测、好记。倍数规则每档翻倍,档位要少,否则第 8 档就是基准的 128 倍。Fibonacci 介于两者之间:前几档增长慢、后面逐渐拉开,适合既要有小间距又要大区块留白的页面。

4px 网格吸附是什么意思?

把 base × n 的结果四舍五入到网格单位的整数倍。例如基准 3px、网格 4px 时,第 1 档 3px 会吸附成 4px,第 3 档 9px 吸附成 8px。这样即使基准单位不是网格倍数,产出的间距仍然全部落在 4px 网格上。

0 档为什么单独列出来?

--space-0: 0 用来显式清零间距(例如 reset 或响应式里把间距收回 0),比直接写 0 更能表达「这里刻意不留间距」。不需要可以取消勾选,档位就从 --space-1 开始。

间距用 rem 还是 px?

对照表同时给出两种单位。rem 会跟随用户设置的根字号缩放,可访问性更好,适合排版相关的间距;固定尺寸的控件(例如按钮高度)用 px 更可控。变量值默认输出 px,rem 放在注释里方便换算。

档数有上限吗?

最多 20 档。倍数和 Fibonacci 规则下档数增长很快,实际项目里 8–12 档已经足够覆盖从 4px 到 96px 的范围,再多反而不好选。

关键词:spacing scalespacing systemdesign tokens4px gridfibonaccicss variables间距系统间距阶梯基准单位8px 网格设计令牌CSS 变量

同类工具