Skip to content
返回设计中心

间距系统与 8px 栅格

基 8 间距阶使 padding、margin、gap 决策自动化且一致。

设计令牌入门

为什么

随机 padding(13px、17px、22px)造成视觉抖动并使 '对齐这个' 成手动战斗。8px 基阶给 6-8 值覆盖所有需求并使对齐自动。

Tokens Studio(原 Figma Tokens)有 50 万以上安装量,W3C 设计令牌格式模块即将成为候选推荐。令牌从单一来源实现暗色模式、多品牌主题和平台一致性。

何时使用

第一天就采用间距阶 — 最便宜、最高杠杆的令牌集。若有 30+ 唯一 padding 值,审计并对齐到阶。

如何做

1. 选基 — 8px(0.5rem);4px 仅用于微调图标 2. 生成阶 — 0、4、8、12、16、24、32、48、64(16 后 ×1.5 步) 3. 命名 — xs=4、sm=8、md=12、lg=16、xl=24、2xl=32、3xl=48、4xl=64 4. 应用到一切 — padding、margin、gap、组件高度全用阶 5. 组件尺寸 — 控件高 = 40px(lg+sm)、卡片 padding = 24px(xl) 6. Tailwind — 映射到 p-1..p-16,或用默认 4px 阶(p-2 = 8px) 7. 强制 — stylelint-declaration-strict-value 禁止阶外原始 px

示例

// spacing-tokens.ts — 8px 基阶 export const space = { 0: "0", xs: "0.25rem", // 4px — 图标内部 sm: "0.5rem", // 8px — 紧凑 gap md: "0.75rem", // 12px — 默认 gap lg: "1rem", // 16px — 卡片内部 xl: "1.5rem", // 24px — 卡片 padding "2xl": "2rem", // 32px — 区段 gap "3xl": "3rem", // 48px — 页面 gap "4xl": "4rem", // 64px — hero gap } as const; /* Card.tsx — 每维度来自阶 */ .card { padding: var(--space-xl); /* 24px */ gap: var(--space-md); /* 12px */ border-radius: var(--radius-md); /* 8px */ box-shadow: var(--space-sm); } /* stylelint 配置 — 禁原始 px */ "declaration-property-value-allowed-list": { "/^(padding|margin|gap)/": ["/var\\(--space/", "0"] }

常见问题

  • ⚠离栅格值 — 13px padding '微调' 对齐,破坏整栅格节奏
  • ⚠阶过细 — 20 间距值,设计者无法决定用哪个
  • ⚠混合基 — padding 8px、图标 6px、字号 10px,无一对齐

最佳实践

  • ✓一基、最多 8 值 — 覆盖 95% 需求,决策变自动
  • ✓现有值对齐到阶 — 13px→12px、22px→24px,绝不保留离栅格
  • ✓stylelint 强制 — 禁 padding/margin/gap 中原始 px,CI 违规失败

常见问题解答