其他
设计卡片/弹窗等浮层时用 elevation…
在为卡片、下拉、模态、提示等浮层 UI 设计阴影与圆角时,用一套 elevation token 与配对规则建立清晰的物理层级感。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 48/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 85/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 55/100 ×0.15
适用场景
设计卡片/弹窗等浮层时用 elevati通用
解决思路
- 把 elevation 定义为一小组 token 层级而非按组件写一次性阴影值:`--shadow-none`(无,平面/内联元素)、`--shadow-xs`(`0 1px 2px rgba(0,0,0,0.06)`,细微卡片、表格行 hover)、`--shadow-sm`(`0 1px 3px rgba(0,0,0,0.10), 0 1px 2px rgba(0,0,0,0.06)`,卡片、输入框聚焦)、`--shadow-md`(`0 4px 6px rgba(0,0,0,0.08), 0 2px 4px rgba(0,0,0,0.06)`,下拉、popover)、`--shadow-lg`(`0 10px 15px rgba(0,0,0,0.08), 0 4px 6px rgba(0,0,0,0.05)`,模态、对话框、侧边抽屉)、`--shadow-xl`(`0 20px 25px rgba(0,0,0,0.08), 0 8px 10px rgba(0,0,0,0.04)`,命令面板、全屏遮罩)。
- 保持阴影轻而扩散,避免使用纯黑(#000)默认值形成厚重、发暗、过时的阴影。
- 应用「Shadow + Border」规则:白色卡片/区块放在浅色背景上时,阴影要搭配 1px 边框,边框色比阴影核心色调深 1.5–2 倍(例如 `#E2E8F0` 或 `grey-200`),让边框定义物理边界、阴影提供深度。
- Hover 必须有明确边缘:会变背景色的卡片必须有边框、阴影或清晰的圆角边界;在无边框的纯平卡片上禁止使用背景色变化 hover,改为 hover 时加边框或加阴影(抬升)。
- 用细微渐变强化深度:自上而下的线性渐变、顶部略亮以模拟顶部光照;亮度变化只保留 2–5%(5% 规则),用户能明显看出渐变起止就太重;用于主按钮、hero 卡片、header 区块。
- 把 elevation 与 border-radius 成对搭配:inline chip/tag 用无阴影 + `--radius-full`(pill);卡片用 `--shadow-sm` + `--radius-md`(8–12px);下拉/popover 用 `--shadow-md` + `--radius-md`(8px);模态/对话框用 `--shadow-lg` + `--radius-lg`(12–16px);toast/通知用 `--shadow-md` + `--radius-md`;按钮用无阴影或 `--shadow-xs` + 统一半径。
- 遵守按钮圆角一致性规则:同一产品内所有按钮(primary、secondary、destructive、ghost)必须使用同一个半径 token(`.btn { border-radius: var(--radius-button); }`),不要给不同变体写不同半径(如 primary 8px、secondary 4px),按钮半径 token 是品牌决策,设定一次全局应用。
- 需要文字与背景分离时用 `text-shadow`:图片/复杂背景上用 `text-shadow: 0 1px 3px rgba(0, 0, 0, 0.25)`;与背景接近时用 `0 1px 2px rgba(0, 0, 0, 0.12)`;浅色背景上的白字用深色阴影 `0 1px 4px rgba(0, 0, 0, 0.30)`。
- 限制 `text-shadow` 参数:不透明度低于 `0.30`,blur 最大 `2–4px`,offset 用 `0 1px` 或 `0 0`(超过 2px 的方向偏移会显得像复古 Web 2.0),且效果必须让人察觉不到是阴影。
- 绝不使用 `text-shadow` 弥补对比度失败——先修正颜色;只在颜色已接近合规、只差一点微调,或文字处于不可预测的图像上时使用。
- 暗色模式下的补偿:提高阴影值的不透明度、给卡片边缘加 `1px solid rgba(255,255,255,0.08)` 边框,并把同一感知深度所需的 elevation 提升一级。
- 按评审清单自检:elevation 是否已做成 design token 而非组件一次性值;每个浮层是否用了与其角色匹配的层级(卡片 ≠ 模态);阴影是否轻盈扩散而非厚重发黑;浅底白卡是否配了 1px 边框;所有按钮变体圆角是否一致;暗色表面卡片/面板边缘是否可见;elevation 是否在表达层级而非纯装饰;渐变是否仅 2–5% 亮度变化并服务于光照/高度隐喻。
- 避免常见反模式:primary/secondary 按钮用不同圆角(改为单一 `--radius-button` token);`box-shadow: 0 8px 16px rgba(0,0,0,0.4)` 这类厚重阴影(改为低透明度多层扩散阴影);给所有元素都加阴影(把阴影只留给真正浮起的元素);白底上的纯平卡片无高度(用 `--shadow-sm` 或 1px 边框定义卡片边界)。
适用边界 · 注意事项
- 不需要表达层级、纯平面/内联风格的界面不必强加阴影,elevation 用于表达层叠而非装饰。
- 不要在颜色对比度本身不达标时用 `text-shadow` 补救,必须先改颜色。
- 暗色背景上不要直接照搬浅色模式的阴影值,需提高不透明度、加边框并提升一级层级。