当前位置: 首页 > news >正文

无障碍设计的月度共读:WCAG 2.2 全部标准的逐一解读与实践

无障碍设计的月度共读:WCAG 2.2 全部标准的逐一解读与实践

一、引子:WCAG 2.2 有 86 条标准,但日常能用到的就 20 条

美院第一年有一门基础课叫"色彩构成",教材厚达 300 页,但老师第一节课就说:"你们这辈子真正会反复用到的色彩原理不超过 20 条,剩下的都是变种。"WCAG 2.2 也是如此——86 条成功标准(Success Criteria)读下来,信息量巨大,但真正覆盖日常前端开发 90% 问题的,大约就是 20 条核心标准。这篇文章把这 20 条拎出来,每条配一段实践代码和具体的参数要求,做成一份可以贴在显示器旁边的速查表。

为什么是 WCAG 2.2 而不是 2.1?因为 2.2 在 2023 年 10 月正式成为 W3C 推荐标准,新增了 9 条标准(其中 4 条与移动端触摸直接相关),包括目标尺寸最小 24px(Level AA)、拖拽操作的替代方案、焦点不要被模态遮挡等。2026 年的浏览器和辅助技术已经全面支持 2.2,没有理由还停留在 2.1。以下按照四大原则——可感知、可操作、可理解、健壮——逐条解读。

二、核心 20 条标准速查

三、高频标准实践代码

<!-- 1.1.1 非文本内容:图片必须有 alt --> <img src="chart.png" alt="2026年Q2销售额柱状图:Q1 120万,Q2 156万,环比增长30%" /> <!-- 1.3.1 信息和关系:使用语义标签 --> <nav aria-label="主导航"> <ul> <li><a href="/dashboard">仪表盘</a></li> </ul> </nav> <!-- 1.4.1 颜色使用:颜色 + 文字 + 图标三重编码 --> <div class="form-error" role="alert"> <span aria-hidden="true">⚠️</span> <span><strong>错误:</strong>密码长度不能少于8位</span> </div> <!-- 1.4.3 对比度:文字 #212121 / 背景 #FFFFFF = 15.3:1 ✓ --> <p style="color: #212121; background: #FFFFFF;">正文文字</p> <!-- 2.1.1 键盘:所有交互元素可键盘操作 --> <button type="button" onClick={handleClick}> 点击我(Enter/Space 自动支持) </button> <!-- 2.4.1 跳过块 --> <a href="#main-content" class="skip-link">跳到主要内容</a> <!-- 2.4.7 焦点可见 --> <style> :focus-visible { outline: 3px solid #1976D2; outline-offset: 2px; } </style> <!-- 2.5.5 目标尺寸 --> <button style="min-width: 44px; min-height: 44px;"> 操作 </button> <!-- 3.3.1 错误识别 --> <input aria-describedby="email-error" aria-invalid="true" /> <span id="email-error" role="alert"> 请输入有效的邮箱地址 </span> <!-- 4.1.3 状态消息 --> <div role="status" aria-live="polite"> 搜索完成,找到 23 个结果 </div>

四、逐条解读与参数要求

1.1.1 非文本内容(A级):所有<img>必须有alt属性。装饰性图片用alt="",信息性图片用简洁描述。关键原则:alt 文本应该传达图片的"意义"而非"外观"。一张销售趋势图的 alt 不应该是"蓝色柱状图",而应该是"Q2 销售额环比增长 30%"。

1.4.3 对比度最小(AA级):正常文本对比度 ≥ 4.5:1,大文本(≥ 18px 常规或 ≥ 14px 粗体)≥ 3:1。实测参数:正文用#212121(不是纯黑#000,纯黑在白底上过于刺眼),背景#FFFFFF,对比度 15.3:1,远超 AA 要求。浅灰色辅助文本#757575对比度 4.6:1,刚好过线——如果再浅一档到#9E9E9E就只有 2.8:1,不达标。这种"刚好过线"的灰色是最容易踩坑的,建议在设计 Token 中直接锁定--color-text-secondary: #616161(对比度 7.3:1),给自己留余量。

1.4.4 文本缩放(AA级):页面在 200% 缩放时不能丢失功能或内容。实操要点:所有布局用rem而非px,因为浏览器缩放是基于根字号的。如果根字号是 16px,200% 缩放后等效 32px,用rem的布局会等比放大,用px的不会。

2.4.7 焦点可见(AA级):WCAG 2.2 新增了 2.4.11 焦点不被遮挡(AA级),要求焦点元素不能被 sticky header 或其他固定定位元素遮挡。建议的焦点样式参数:outline: 3px solid #1976D2; outline-offset: 2px;——3px 宽度在视觉上清晰可辨,2px 偏移确保轮廓不紧贴元素边缘。千万不要写outline: none然后不提供替代方案。

2.5.5 目标尺寸(AAA级,2.2 新增 2.5.8 为 AA级 24px):WCAG 2.2 将移动端触摸目标的最小尺寸从 AAA 级的 44px 下放到 AA 级的 24px。但实践中建议直接用 44px(iOS HIG 的标准),因为 24px 在手指操作时仍然容易误触。具体参数:min-width: 44px; min-height: 44px;,对于图标按钮尤其重要——视觉上可能只有 24px 的图标,但点击区域必须扩展到 44px,可以用padding撑开。

3.3.1 错误识别(A级):错误信息必须同时满足三个条件——描述错误内容("邮箱格式不正确"而非"输入有误")、定位错误位置(aria-describedby关联到对应输入框)、用role="alert"让屏幕阅读器即时播报。

4.1.3 状态消息(AA级):动态插入的 DOM 内容(如"搜索完成,找到 23 个结果")必须用aria-live通知辅助技术。aria-live="polite"适用于非紧急消息(等用户当前操作完成后再播报),aria-live="assertive"适用于紧急消息(立即打断)。大多数场景用polite就够了,assertive会打断屏幕阅读器正在朗读的内容,只在错误提示等真正紧急的场景使用。

五、自动化检查覆盖率

WCAG 2.2 的 86 条标准中:

  • 可自动检测(axe-core):约 25 条(29%)
  • 需要半自动(工具辅助 + 人工判断):约 35 条(41%)
  • 必须人工检测:约 26 条(30%)

这意味着即使你配齐了 axe-core + Lighthouse + Pa11y 的自动化工具链,也只能覆盖不到三分之一的合规要求。剩下的 71% 需要人工判断——对比度是否达标可以自动检测,但"颜色是否作为唯一信息编码"需要人看页面;alt文本是否存在可以自动检测,但alt文本是否有意义需要人读内容。无障碍审计的本质是"自动化排雷 + 人工精审",两层缺一不可。

六、总结

  1. WCAG 2.2 共 86 条标准,约 20 条核心标准覆盖 90% 日常问题,建议做成速查表贴在工位
  2. 自动化检查覆盖率仅 29%,必须配合人工审计,无障碍没有"一键合规"的银弹
  3. 颜色 + 文字 + 图标三重编码优于仅颜色编码,这是信息设计的基本功
  4. 焦点管理(可见 + 顺序 + 跳过链接 + 不被遮挡)是键盘可访问性的基础设施
  5. aria-liverole="alert"是动态内容无障碍的关键,注意politeassertive的场景区分
  6. 2026 年应该直接对标 WCAG 2.2,而非停留在 2.1——新增的 9 条标准覆盖了移动端触摸的核心场景

资料说明

本文中的协议、版本、性能、成本和行业趋势应以可核验的一手资料为准。未标注统计口径的比例、时间表和预测仅作工程讨论,不应视为行业事实。可参考 0731 资料来源索引,并在发布前将具体来源贴到对应断言之后。

量化口径

文中用于说明的比例、费用、性能、时间和阈值,如未紧邻给出公开来源、原始记录或测试条件,均为示例参数、内部试点口径或待验证目标,不应视为行业统计或可直接复用的生产结论。

http://www.jsqmd.com/news/1304112/

相关文章:

  • 3分钟掌握OpenSpeedy:完全免费的开源游戏加速神器
  • Transformer大模型实战:从自注意力原理到多模态应用开发
  • 【别再手动配置 Android 环境了:Mob 让 VS Code 的移动开发回到“打开项目就能跑”】
  • 2026盘点:石家庄皮带输送机制造商哪家好——铭扬机械设备深度解析 - 装修教育财税推荐2026
  • 电机齿轮无损拆卸与更换:从拉马工具使用到传动系统维护全解析
  • 创业三年实现2000万营收的五大关键要素
  • 《非程序员AI编程实践教程》-第0讲 引言:非程序员也能做软件产品
  • PMP认证价值与2026职业发展路径解析
  • AI Agent技术实现与行业应用实践
  • Flutter + AI 的融合实践:7月最成功的 5 个技术交叉点复盘
  • ai说的好有道理
  • 电机齿轮无损更换指南:拉马工具使用与安全拆卸全流程
  • 专科生论文写作利器:千笔工具的核心功能与实操指南
  • 2024年JMeter接口压力测试实战:从环境搭建到性能调优全解析
  • RPG Maker加密文件处理:如何在不安装软件的情况下本地解密游戏资源?
  • 构建智能用户称呼引擎:Spring Boot规则引擎实战与社交应用体验优化
  • 2026年8月赣州科沃斯扫地机器人App无法连接如何排查|送检准备与现有门店地址 - 数码品牌推荐
  • 车载Android手势识别开发:三指飞屏功能实现与优化
  • ADC前端滤波电容选型误区:大电容为何导致采样失真?
  • CBM14AD125国产高速ADC替换AD9253实战:引脚兼容、FPGA驱动与性能验证
  • SolidWorks_动画模拟与仿真15_仿真结果可视化
  • Unity游戏UI开发实战:基于FGUI的背包系统设计与实现
  • 阿里云Qwen大模型与n8n集成:构建AI驱动自动化工作流
  • Fable AI奇幻风格控制:提示词工程与参数调优实战
  • Qt WebEngineView开发实战:内存管理、IPC与部署的深度避坑指南
  • SpringBoot+Vue高校迎新系统开发与高并发优化实践
  • pgvector 生产级调优实战:HNSW 三参数、halfvec 与查询延迟从 35ms 降到 7ms
  • 13种贝斯编曲技巧全解析:从根音到旋律化设计
  • QWENPAW 本地部署实战:结合免费模型配置实现零成本运行
  • 供水管网漏损评价指标计算与应用指南