Skip to content
返回设计中心

阴影与圆角系统

表达深度与层级一致的 elevation 阶与圆角令牌。

设计令牌入门

为什么

随机阴影(10 种不同模糊)和圆角(4px、6px、8px、12px 混用)让 UI 显得不精致。小 elevation 阶和 3 圆角表达深度与分组无需任意选择。

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

何时使用

随色阶一起定义阴影和圆角。若有 5+ 阴影定义,合并为 4-5 级 elevation 阶。

如何做

1. Elevation 阶 — none、sm(1px)、md(4px)、lg(8px)、xl(16px)— 映射 z-depth 含义 2. 阴影配方 — y 偏移 = 模糊/2、不透明 0.05-0.15、单一光源方向(左上) 3. 圆角阶 — sm=4、md=8、lg=12、full=9999(药丸);最多 3-4 值 4. 按表面配对 — 卡片=md 圆角+sm 阴影、模态=lg 圆角+lg 阴影、下拉=sm 圆角+md 阴影 5. 暗色模式 — 阴影在暗色不可见;用 1px 边框 + 更亮表面替代 6. 令牌 — --shadow-{none|sm|md|lg|xl}、--radius-{sm|md|lg|full} 7. 强制 — stylelint 禁原始 box-shadow 和 border-radius 值

示例

/* shadow-radius-tokens.css */ :root { --radius-sm: 4px; --radius-md: 8px; --radius-lg: 12px; --radius-full: 9999px; --shadow-none: none; --shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05); --shadow-md: 0 4px 8px 0 rgb(0 0 0 / 0.08); --shadow-lg: 0 8px 16px 0 rgb(0 0 0 / 0.10); --shadow-xl: 0 16px 32px 0 rgb(0 0 0 / 0.12); } /* 表面配对 — 圆角 + 阴影共同表达深度 */ .card { border-radius: var(--radius-md); box-shadow: var(--shadow-sm); } .modal { border-radius: var(--radius-lg); box-shadow: var(--shadow-lg); } .dropdown{ border-radius: var(--radius-sm); box-shadow: var(--shadow-md); } .pill { border-radius: var(--radius-full); } /* 暗色模式 — 阴影不可见,用边框 + 表面 elevation */ :root[data-theme="dark"] .card { box-shadow: none; border: 1px solid var(--color-border-subtle); background: var(--color-surface-raised); }

常见问题

  • ⚠多光源方向 — 一阴影向右下,另一向左上,看起来破损
  • ⚠暗色模式用阴影 — 不可见,elevation 丢失,模态对页面显得平
  • ⚠圆角不一致 — 卡片 8px、头 6px、图 12px,看起来拼接

最佳实践

  • ✓一光源方向、一阴影配方 — 阶中仅变 y 偏移和模糊
  • ✓暗色模式用边框 + 表面色 elevation 替代阴影
  • ✓圆角匹配父级 — 内部元素用相同或更小圆角,绝不用更大

常见问题解答