Figma 阴影与深度系统(Elevation & Layered Shadow System)架构实战:从物理光影衰减模型、多层阴影叠加到 Variables 变量模式驱动与 CSS 工业级代码交付
1. 传统单层阴影的视觉缺陷与物理双光源光学模型 #
在现代数字产品界面设计中,阴影(Drop Shadow)并不仅仅是一种装饰性的视觉特效,更是界面空间层级(Spatial Depth & Z-index)、信息亲疏关系以及交互悬浮态(Hover / Active)的核心隐喻。
然而,在大量初中级设计稿中,常常能看到粗糙生硬的“单层阴影”配置——例如随手添加一个 Y: 4, Blur: 8, Spread: 0, #000000 25% 的投影。这种单层阴影在视觉上往往存在严重的致命缺陷:
- 边缘生硬污浊(Hard & Muddy Edges):纯黑色(#000000)的高透明度投影在浅色背景上容易形成一圈灰脏的污痕,破坏了界面的清透感与现代高级感;
- 缺乏空间景深衰减:真实物理世界中的阴影永远由多个光源共同作用,单层算法无法模拟光线的漫反射与空气衰减;
- 无法自适应暗黑模式:在深色背景下,黑色阴影几乎完全不可见,导致模态弹窗与浮动卡片彻底丧失空间层级感。
物理双光源投射模型 (Two-Light Optical Model):
☀️ 主定向光源 (Key Light)
\
\
┌──────┐ ▼
│ 卡片 │───────► [主光阴影 Key Shadow]: 清晰、偏移较大、界定光照方向
└──────┘
▲
/
☁️ 环境漫反射光 (Ambient Light)
[环境光阴影 Ambient Shadow]: 柔和、大模糊、无明显偏移、贴近物体边缘
为了还原真实自然的物理质感,现代顶级设计系统(如 Apple iOS、Material Design 3 以及 Tailwind CSS)均采用了双层或多层阴影叠加模型(Layered Shadows):
- 第一层:主光阴影(Key Light Shadow):模拟上方主光源产生的定向直射投影。其特点是具备明确的 Y 轴垂直偏移,模糊半径适中,透明度较低,用于交代光源的物理方向与物体的离地高度;
- 第二层:环境光阴影(Ambient Light Shadow):模拟四周漫反射光在物体底部产生的光线遮挡(Ambient Occlusion)。其特点是 Y 轴微小偏移甚至为 0,拥有极大的模糊半径(Blur),透明度极低,用于柔和地将物体与底层画板融合,消除生硬边界。
2. 企业级 Elevation 标高层级架构与参数矩阵 #
企业级设计系统通常将 UI 界面的空间深度划分为 6 个标准的标高等级(Elevation 0 ~ 5)。下表为生产级 Figma 双层阴影规范与参数对照矩阵:
| 标高等级 (Elevation) | 业务应用场景 | 主光阴影 (Key Light) 参数 | 环境光阴影 (Ambient Light) 参数 | 视觉隐喻与感知效果 |
|---|---|---|---|---|
| Elevation 0 (Flat) | 页面主画布、纯平背景卡片、输入框基底 | 无投影(None) | 无投影(None) | 绝对贴合底层,无任何空间浮起 |
| Elevation 1 (Raised) | 基础商品卡片、文章列表项、数据胶囊 Badge | X:0, Y:1, Blur:2, #000000 5% | X:0, Y:0, Blur:1, #000000 4% | 微妙微凸浮起,赋予卡片独立轮廓 |
| Elevation 2 (Floating) | 鼠标悬停卡片(Hover)、浮起按钮、下拉菜单 Dropdown | X:0, Y:4, Blur:6, #000000 7% | X:0, Y:2, Blur:4, #000000 4% | 明晰的悬浮感,传达可交互或激活意图 |
| Elevation 3 (Overlay) | 气泡提示 Popover / Tooltip、浮动导航栏 Sticky Bar | X:0, Y:10, Blur:15, #000000 8% | X:0, Y:4, Blur:6, #000000 4% | 明显高于常规内容,覆盖在主视口之上 |
| Elevation 4 (Modal) | 对话框 Dialog、模态弹窗 Modal、侧滑抽屉 Drawer | X:0, Y:20, Blur:25, #000000 10% | X:0, Y:8, Blur:10, #000000 5% | 极高层级遮盖,强引导用户聚焦处理当前任务 |
| Elevation 5 (Topmost) | 全局通知 Toast、浮动操作按钮 FAB、全屏大图预览 | X:0, Y:25, Blur:50, #000000 15% | X:0, Y:12, Blur:15, #000000 7% | 最高空间层级,宛如悬浮在屏幕最上空的物理实体 |
3. 在 Figma 中落地深度系统的实操方案:Style 与 Variables 协同架构 #
目前很多设计师在构建 Figma 变量体系(Variables)时会产生困惑:“为什么在 Local Variables 面板中找不到 Effect(投影)类型的变量?”
这是因为在 Figma 当前的架构中,Variables 专精于原子标量(Color、Number、String、Boolean)。要在 Figma 中工业级落地深度系统,必须采用 Effect Styles 封装外壳 + Variables 驱动底层原子 的协同架构:
┌────────────────────────────────────────────────────────┐
│ Tier 1: Atomic Variables (基础变量层) │
│ - Color Variable: shadow-color-key, shadow-color-ambient
│ - Number Variable: elevation-1-y, elevation-1-blur │
└──────────────────────────┬─────────────────────────────┘
│ 组合引用与多模式绑定
▼
┌────────────────────────────────────────────────────────┐
│ Tier 2: Effect Styles (投影样式层) │
│ - Effect Style: Elevation / 01 - Raised (双层 Drop Shadow)
│ - Effect Style: Elevation / 02 - Floating (双层 Drop Shadow)
└──────────────────────────┬─────────────────────────────┘
│ 赋能下游组件
▼
┌────────────────────────────────────────────────────────┐
│ Tier 3: Design System Components (组件层) │
│ - Button, Card, Dropdown, Modal Dialog │
└────────────────────────────────────────────────────────┘
详细实操创建流程 #
- 配置语义色彩变量:
- 打开
Local variables面板,创建色彩变量shadow/key与shadow/ambient; - 在 Light 模式下,将色值映射为深蓝灰或纯黑(例如
#0F172A),并保持透明度在 5%~15% 区间;
- 打开
- 在 Effect Styles 中构建双层阴影:
- 选中任意测试矩形,在右侧属性面板找到
Effects,点击+两次,添加两个Drop shadow; - 点击第一个投影图标,输入主光阴影参数(如
X:0, Y:4, Blur:6, Spread:-1),颜色选择绑定的shadow/key变量; - 点击第二个投影图标,输入环境光阴影参数(如
X:0, Y:2, Blur:4, Spread:-2),颜色选择绑定的shadow/ambient变量; - 点击 Effects 面板右上角四点图标,将其保存为全局团队库样式:
Elevation/02 - Floating;
- 选中任意测试矩形,在右侧属性面板找到
- 利用负 Spread(外延扩张)收敛边缘脏迹:
- 高阶技法:在主光阴影中将
Spread设为-1px或-2px。负外延能够在保持大模糊半径的同时,收缩阴影的实际几何扩散范围,彻底解决投影从卡片两侧漏出造成的“视觉发胖”问题。
- 高阶技法:在主光阴影中将
4. 暗黑模式(Dark Mode)下的阴影物理失效与表面亮度补偿规范 #
在深色主题(Dark Theme)界面中,背景通常为 #0B0F19 或 #121212 等接近纯黑的色调。由于物理对比度规律,黑色的 Drop shadow 投射在黑色背景上完全被吞没,直接导致界面的空间层级失效。
为了在深色模式下完美呈现深度感知,工业界普遍采用 “表面提升加亮(Surface Elevation Overlay)+ 高光微边框(Subtle Border)” 的复合补偿策略:
1. 表面亮度提升(Surface Lightening) #
根据 Material Design 3 深度规范,物体离地高度越高,其接收到的环境光越多,因此卡片本身的表面颜色应当越浅:
- Elevation 0 (背景):
#121212(0% 叠加) - Elevation 1 (基础卡片):
#1E1E1E(叠加 5% 白色高光) - Elevation 2 (悬停卡片):
#232323(叠加 7% 白色高光) - Elevation 3 (弹窗浮层):
#282828(叠加 11% 白色高光) - Elevation 4 (抽屉通知):
#2E2E2E(叠加 14% 白色高光)
2. 1px 细微半透明高光边框(Subtle Translucent Stroke) #
在 Figma 中为暗黑模式组件统一配置 1px Inside 描边:
- 颜色绑定至
border/subtle变量,在 Dark Mode 模式下设定为rgba(255, 255, 255, 0.08)到0.12; - 微弱的半透明白色高光描边能精准勾勒出卡片的几何边界,结合卡片自身的表面亮度差,在暗黑模式下呈现出极度高级且细腻的物理雕刻感。详细暗黑模式与多主题变量模式切换方案,可参阅 Figma 暗黑模式与多主题设计系统深度实战。
5. 前端工程化代码交付:CSS box-shadow 与 Tailwind CSS 配置映射 #
在研发交付链路中,通过 Figma Dev Mode 深度指南 提取的多层阴影可直接转换为工业级前端代码。
1. 原生 CSS 变量与多层 box-shadow 规范 #
在 CSS 中,box-shadow 支持使用逗号 , 分隔多层阴影值,语法顺序与 Figma 从上至下的叠加完全一致:
:root {
/* Elevation 1: 基础卡片微凸 */
--shadow-elevation-1:
0 1px 2px 0 rgba(15, 23, 42, 0.05),
0 0 1px 0 rgba(15, 23, 42, 0.04);
/* Elevation 2: 悬停态与浮动下拉菜单 */
--shadow-elevation-2:
0 4px 6px -1px rgba(15, 23, 42, 0.08),
0 2px 4px -2px rgba(15, 23, 42, 0.04);
/* Elevation 3: 模态对话框与抽屉 */
--shadow-elevation-3:
0 10px 15px -3px rgba(15, 23, 42, 0.10),
0 4px 6px -4px rgba(15, 23, 42, 0.05);
/* Elevation 4: 全局通知与高浮层 */
--shadow-elevation-4:
0 20px 25px -5px rgba(15, 23, 42, 0.12),
0 8px 10px -6px rgba(15, 23, 42, 0.06);
}
2. Tailwind CSS 配置文件扩展实战 #
在前端项目的 tailwind.config.js 中,将 Figma 的 Elevation 标高层级映射为原子类:
/** @type {import('tailwindcss').Config} */
module.exports = {
theme: {
extend: {
boxShadow: {
'elevation-1': '0 1px 2px 0 rgba(15, 23, 42, 0.05), 0 0 1px 0 rgba(15, 23, 42, 0.04)',
'elevation-2': '0 4px 6px -1px rgba(15, 23, 42, 0.08), 0 2px 4px -2px rgba(15, 23, 42, 0.04)',
'elevation-3': '0 10px 15px -3px rgba(15, 23, 42, 0.10), 0 4px 6px -4px rgba(15, 23, 42, 0.05)',
'elevation-4': '0 20px 25px -5px rgba(15, 23, 42, 0.12), 0 8px 10px -6px rgba(15, 23, 42, 0.06)',
}
}
}
}
在前端模板中,开发者只需书写 class="shadow-elevation-2 hover:shadow-elevation-3 transition-shadow duration-200",即可实现设计稿与生产环境 1:1 的无缝像素级还原。
6. 深度系统设计走查与 QA 验证清单 #
在将阴影与深度系统发布至企业全局团队库前,建议遵循以下清单执行闭环检验:
- [ ] 严禁裸值硬编码:画布中所有组件卡片必须绑定标准
Elevation样式,禁止出现手动填写的独立 Effect 参数; - [ ] 负外延(Negative Spread)校验:检查中高标高阴影是否合理设置了负 Spread,避免出现左右两侧视觉溢出发胖;
- [ ] 暗黑模式高光兼容:在深色主题下切换检查,确保卡片具有清晰的表面层级亮度梯度与半透明 1px 边框;
- [ ] 前端渲染性能评估:避免在单页超长虚拟滚动列表中滥用超过 3 层的超大模糊阴影,必要时结合 CSS
will-change: box-shadow或硬件加速规避重绘掉帧。
更多设计系统架构与变量工程化实践,可阅读站内关联指南:
核心手册与速查工具
高频手册与实用设计生产力工具直达常见问题与答疑 (FAQ)
高频疑难解析与避坑指南完全不需要。绝大多数核心功能在免费 Starter 计划中均可完整体验与实操练习,无需额外付费购买付费团队版。