Figma 无障碍设计(Accessibility & a11y)合规落地实战:WCAG 2.2 色彩对比度自检、焦点态(Focus State)设计规范、暗色模式适配与前端 ARIA 属性交付
在数字化产品席卷全球的今天,无障碍设计(Accessibility,简称 a11y) 已从曾经的“设计锦上添花”演变为全球商业合规的“硬性法律门槛”。随着欧盟《欧洲无障碍法案》(European Accessibility Act,EAA)的全面生效,以及美国《美国残疾人法案》(ADA Title II / Section 508)对数字界面的严格审查,未能满足 WCAG 2.2(Web 内容无障碍指南) 标准的产品正面临着严峻的法律诉讼与企业级大客户采购的一票否决。
对于现代设计团队而言,无障碍绝不是在产品上线前匆忙运行一下色盲滤镜,而是贯穿在设计系统(Design System)基底中的工程化基准。然而,在日常 Figma 协作中,团队往往面临以下痛点:
- 对比度凭感觉调,上线直接翻车:浅灰正文搭配浅色背景看似“高级极简”,但在专业 a11y 审核工具下对比度远低于 4.5:1,被系统判定为严重缺陷;
- 只做鼠标 Hover,彻底丢失 Focus 焦点态:组件变体库中只有
Default、Hover、Active态,完全没有为仅靠键盘或辅助屏幕阅读器的用户设计明显的焦点环(Focus Ring); - 触控区域过小导致误触率飙升:为了界面紧凑,图标按钮直接按照 16x16px 尺寸切图,忽略了移动端 44x44px 最小物理触摸热区规范;
- 暗黑模式(Dark Mode)对比度穿透失效:切换暗色模式时,由于缺乏语义化 Token 约束,导致图标与次级文本直接湮没在深色背景中。
本文将以 WCAG 2.2 AA / AAA 规范为标尺,系统拆解在 Figma 中打造工业级无障碍合规设计系统的完整方法论与落地工作流。
1. WCAG 2.2 核心合规标尺与对比度计算模型 #
WCAG(Web Content Accessibility Guidelines)主要设立了 3 个合规等级:A(最低级)、AA(全球通用强制标准)与 AAA(专业级最高标准)。在绝大多数商业软件与企业级交付中,达成 WCAG 2.2 AA 级是法务与产品团队的核心目标。
1.1 色彩对比度三级标尺矩阵 #
WCAG 对比度基于相对亮度(Relative Luminance)对数公式计算,比值范围从 1:1(完全相同颜色,不可辨识)至 21:1(纯黑与纯白,最高反差)。
| 元素分类 | 规格边界定义 | WCAG AA 级要求 (通用合规) | WCAG AAA 级要求 (深度无障碍) | 典型设计落地场景 |
|---|---|---|---|---|
| 正文文本 (Normal Text) | 字号小于 18pt(约 24px)或粗体小于 14pt(约 18.6px) | ≥ 4.5:1 | ≥ 7.0:1 | 段落正文、输入框 Placeholder、表单 Label、卡片描述 |
| 大号文本 (Large Text) | 字号大于等于 18pt 或粗体大于等于 14pt | ≥ 3.0:1 | ≥ 4.5:1 | 页面大标题 H1/H2、Banner 醒目文案、数字看板大指标 |
| 非文本 UI 控件 (UI Components) | 输入框边框、复选框、单选按钮、开关滑块轮廓 | ≥ 3.0:1 | ≥ 4.5:1 | 描边按钮边框、表单控件外边框、标签页选中激活指示条 |
| 功能性图形 (Graphical Objects) | 独立表达业务含义的图标、数据图表折线与柱状图 | ≥ 3.0:1 | ≥ 4.5:1 | 导航图标、状态提示 Icon(警告/成功)、数据可视化各色块间距 |
| 非活动装饰元素 (Incidental / Disabled) | 纯装饰背景图案、明确处于禁用状态(Disabled)的按钮 | 无硬性强制 | 无硬性强制 | 置灰且不可点击的提交按钮、背景氛围渐变光斑 |
WCAG 2.2 AA 对比度视觉临界判定模型:
┌────────────────────────────────────────────────────────┐
│ 背景: 纯白 (#FFFFFF) │
│ │
│ [4.5:1 临界线] 正文文本安全最低值: #767676 (及更深色) │
│ ✔ "这段描述文本对比度为 4.54:1,合规通过" │
│ │
│ [3.0:1 临界线] 大标题与控件边框安全最低值: #949494 │
│ ✔ 大号加粗标题 或 表单边框轮廓通过 │
│ │
│ [危险区 < 3.0:1] 浅灰文本: #B3B3B3 │
│ ✖ 对比度仅 2.5:1,WCAG AA 判定违规! │
└────────────────────────────────────────────────────────┘
2. 基于 Figma Variables 变量构建合规色彩架构 #
在过往,许多设计师仅仅依靠手动取色或零散的 Local Styles,这导致后期调整无障碍色值时代价极其高昂。通过 Figma 现代的 Variables 变量与设计令牌 体系,我们可以将 a11y 约束内生化到色彩 Token 架构中。
2.1 三层 Token 的 a11y 隔离模型 #
- Primitive Layer(全局原子色):存储原始基础色阶,如
Blue-500: #2563EB、Gray-600: #4B5563; - Semantic Layer(语义化层):根据 UI 角色与无障碍职能命名,严禁使用具体色相命名:
text/primary(正文主色):在白底上绑定Gray-900(对比度12.5:1);text/secondary(次级文字):必须严格选用对比度高于4.5:1的色标(如Gray-600,白底对比度5.2:1,切勿误用Gray-400);border/interactive(可交互控件边框):选用对比度高于3.0:1的色标(如Gray-500);
- Component Layer(组件专属层):如
button/primary/fg继承text/primary。
2.2 利用 Scopes 作用域构筑“物理防错栏” #
很多无障碍事故源于团队新人将适合做背景的浅色变量误赋予了文字。
- 打开 Variables 面板,进入
Edit Variable设置; - 为浅背景类变量(如
bg/surface-subtle)在Scopes面板中取消勾选Text fill; - 为文字专属变量(如
text/secondary)仅保留Text fill勾选,取消勾选Frame fill与Stroke。 这样在设计时,右侧填充面板将无法为文本选择对比度不足的浅色 Token,从源头消灭 a11y 违规。
2.3 增加高对比度模式(High-Contrast Mode) #
利用 Figma 的 Variable Modes(多模式切换) 功能,除了常见的 Light 与 Dark 模式外,可平行建立 High Contrast 模式:
- 在 High Contrast 列中,将次级文本、分割线和边框的对比度直接拉满至
7:1(AAA 级); - 当需要进行企业无障碍专项测试或面向视障特殊群体定制界面时,只需选中顶层画板切换 Mode,整个设计稿即刻全自动无损重渲染为超高对比度界面,完整机制可联动参考 Figma 响应式跨端变量与模式切换实战。
3. 焦点态(Focus State & Focus Ring)组件设计规范 #
在无障碍交互中,依赖键盘(Tab 键导航)或开关控制设备(Switch Access)的用户完全无法触发鼠标的 :hover 悬停状态。如果界面缺少清晰明确的焦点环(Focus Ring),键盘用户将完全不知道当前屏幕聚焦点停留在哪里。
3.1 工业级双层焦点环(Double-Layer Focus Ring)解构 #
单一纯黑色或纯白色焦点环在复杂背景下极易失效(例如纯黑焦点环在暗色背景下完全隐形,纯白焦点环在明亮卡片上难以察觉)。目前顶级设计系统(如 Apple Human Interface Guidelines、Google Material 3 与 Microsoft Fluent)普遍采用**“双层反差轮廓”**设计:
双层焦点环物理构造切面:
┌──────────────────────────────────────────────┐
│ [外层 2px] 高反差品牌主色环 (如 #0052FF) │
│ ┌──────────────────────────────────────────┐ │
│ │ [内层 2px Offset 间隙] 背景对比反差白圈 │ │
│ │ ┌──────────────────────────────────────┐ │ │
│ │ │ 核心按钮主体 (Button Body) │ │ │
│ │ └──────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────┘ │
└──────────────────────────────────────────────┘
3.2 在 Figma 中优雅构建 Focus Ring 的 2 种零代码方案 #
方案 A:双重内外部描边叠加(Strokes Stacking) #
- 选中按钮组件变体中的
State=Focus; - 为外层容器添加第 1 条 Stroke:颜色设为背景色(如纯白
#FFFFFF),粗细设为2px,对齐方式设为 Outside; - 点击
+号添加第 2 条 Stroke:颜色设为高对比高亮蓝(如#0052FF),粗细设为4px(外展 2px + 间距 2px),对齐方式设为 Outside; - 这种方式无需任何多余辅助图层,组件变体尺寸依旧与普通状态完全一致,绝不挤压周边 Auto Layout 自动布局 容器。
方案 B:Drop Shadow 零模糊双重投影模拟(Spread Trick) #
- 在按钮的
Effects面板中添加 Drop shadow; - 配置参数:
X: 0,Y: 0,Blur: 0(消除虚化,呈现纯净实线),Spread: 2px,颜色选择纯白反差圈; - 添加第 2 个 Drop shadow:
X: 0,Y: 0,Blur: 0,Spread: 4px,颜色选择品牌焦点蓝; - 该方案完全脱离描边属性,即使按钮本身带有复杂 Border,也绝对互不冲突。
4. 触控热区(Target Size)与排版无障碍工程化 #
除了色彩,WCAG 2.2 的 SC 2.5.8(Pointer Target Spacing) 对可交互元素的物理尺寸提出了严苛要求。
4.1 最小触摸与点击热区标准 #
- iOS HIG 标准:最小点击目标为
44 x 44 pt; - Android Material 标准:最小点击目标为
48 x 48 dp; - WCAG 2.2 AA 级基准:最小可交互尺寸至少为
24 x 24 CSS px,或者拥有至少 12px 的无重叠间隙保护。
4.2 小图标的高保真“隐形热区”封装实操 #
设计师经常需要放置 16 x 16px 的关闭叉号或问号提示图标。直接拿 16px 矢量图层做交互会导致移动端用户极易点空,引发糟糕体验。
- 规范做法:
- 绝对不要直接导出或连线 16px 裸图元;
- 选中 16px 图标,按下
Shift + A包裹为 Auto Layout 容器,命名为Target_Hitbox; - 将该容器的宽度和高度显式强制写死为
44 x 44px(Fixed Width / Fixed Height); - 将对齐方式设为 Center(正中对齐);
- 内部填充保持无色(Transparent),仅在检查器中保留边界交互锚点。 这样在视觉上它依旧是精致小巧的 16px 图标,但在点击交互与研发渲染流中,它拥有完整的 44px 合规触控热区!
4.3 文本排版防拥挤三要素 #
为了保障阅读障碍人士(如低视力或阅读障碍症 Dyslexia)的浏览顺畅度,必须在排版样式中锁定以下基准:
- 行高(Line Height):段落正文行高建议设为字号的
1.5倍 ~ 1.6倍(例如 14px 正文搭配 22px 行高,严禁使用紧贴字体的默认挤压行高); - 段落间距(Paragraph Spacing):段间距应至少保持为行高的 1.5 倍,避免文字糊成一片;
- 字重与混淆字符避坑:避免在 12px 及以下尺寸使用 Thin / Ultralight 超细字重,确保字母
I(大写 i)、l(小写 L)与数字1具备清晰的字形差异。
5. 色盲模拟审查与 Dev Mode a11y 前端交付流程 #
设计完成后,必须经过标准化的审查(Audit)流程方可交付给研发团队。
5.1 色觉障碍(Color Blindness)自检矩阵 #
人类中有约 8% 的男性和 0.5% 的女性存在不同程度的色觉缺陷。在 Figma 中设计时,严禁使用“单一色彩”作为传递关键业务状态的唯一媒介(例如:不能仅用红色表示错误、仅用绿色表示通过)。
| 色觉障碍类型 | 常见感知混淆特征 | 界面设计防御与补偿策略 |
|---|---|---|
| 绿色弱/红绿色盲 (Deuteranopia) | 无法清晰分辨红绿,红色常偏暗棕黄色,绿色偏灰 | 在警示提示中必须附带明确的图标(如叹号图标 ⚠️、叉号图标 ❌)及文字说明 |
| 红色盲 (Protanopia) | 对长波长红光敏感度低,深红在视觉上接近暗黑或深灰 | 避免使用纯红文字表达关键链接,链接必须具备下划线(Underline)修饰 |
| 蓝黄色盲 (Tritanopia) | 蓝绿混淆、黄粉混淆,日常较为少见但破坏性强 | 增强明暗亮度差(Luminance Contrast)而非单纯依赖色相差(Hue Difference) |
| 全色盲 (Achromatopsia) | 完全无法感知色彩,视觉世界仅有灰度阶差 | 将整个画板置于灰度滤镜下测试,关键按钮与信息层级必须依然层次分明 |
5.2 Dev Mode 无障碍交付标注清单 #
进入 Figma Dev Mode(开发模式) 时,设计师应使用 Annotation(注解)工具为工程师标注无障碍技术属性:
- HTML 语义标签标注:明确标出哪些容器对应
<header>、<nav>、<main>、<article>; - ARIA 角色与状态映射(ARIA Roles & States):
- 自定义下拉菜单应标注
role="combobox"与aria-expanded="false/true"; - 纯图标按钮必须标注
aria-label="关闭窗口"或aria-label="搜索",禁止前端出现无名称按钮(Nameless Button);
- 自定义下拉菜单应标注
- 焦点跳转顺序(Tab Order):在复杂双栏或卡片流界面,使用标号标注键盘 Tab 键的理想聚焦顺序(
1 -> 2 -> 3 -> 4),防止由于 CSS flex 倒置导致键盘导航逻辑跳跃。
对于更多组件研发交接与样式边界排错,可联动参阅 Figma 常见报错与疑难故障诊断手册 以及 快捷键速查表。构建全面合规的无障碍设计体系,不仅能保护企业规避严苛的合规法律风险,更能让产品真正包容每一个用户,践行普惠平等的数字化设计愿景。
核心手册与速查工具
高频手册与实用设计生产力工具直达常见问题与答疑 (FAQ)
高频疑难解析与避坑指南完全不需要。绝大多数核心功能在免费 Starter 计划中均可完整体验与实操练习,无需额外付费购买付费团队版。