mcpField
U
ux-accessibility-audit

ux-accessibility-audit

github.com/uxcel-lab设计与 UI36110 次安装17 周前更新
代码仓库

关于 ux-accessibility-audit

ux-accessibility-audit 是依据 WCAG 评估现有界面或代码的无障碍审查技能,面向设计和开发团队。它系统检查六类问题,并为每项发现标注 WCAG 条款、严重程度和具体修复方式。

主要功能

  1. 01以 WCAG 2.1 AA 为默认目标
  2. 02检查颜色对比、文本与表单
  3. 03检查链接、导航、图像和多媒体
  4. 04检查表格与列表语义
  5. 05按严重程度提供条款依据和修复建议

适用场景

  1. 01审核设计稿或现有界面的无障碍性
  2. 02检查键盘操作和焦点状态
  3. 03排查表单标签与错误提示问题
  4. 04评估媒体替代内容和表格语义

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/uxcel-lab/product-skills --skill ux-accessibility-audit

安装后在 Claude Code 中输入/ux-accessibility-audit确认已加载。

详细介绍

无障碍审计技能

此技能的工作方式(请先阅读)

这是一项评估型技能——它会依据标准(WCAG)审查现有成果,而不是生成 UI。标记问题是安全的,因此此技能会自动运行;它既可由生成型技能作为验证步骤调用,也可直接调用。

此技能负责本仓库中的无障碍问题。生成型技能会将问题交由它处理(例如 ux-login-signup、ux-pricing),而启发式审计(ux-heuristics-audit)会有意将对比度/键盘/屏幕阅读器的具体问题交由此技能处理,以免重复审查。调用此技能时,请完整执行无障碍审查;不要假定其他技能已经覆盖了这些问题。

严格遵循范围。 直接调用此技能(用户指定了此审计)时,只审查此关注点——不要纳入同级审计。只有当协调器(ux-design-review)或生成型技能依据 docs/orchestration-policy.md 调用此技能时,它才会与其他审查视角并行;此时它属于B 级——可选(如果正在使用设计系统,则缩小为仅审查其使用方式)。明确指定的范围始终优先。


此技能与默认行为的不同之处

默认情况下,无障碍反馈往往不够全面且含糊——只指出几个明显问题(“添加替代文本”“检查对比度”),却没有标准、严重程度或系统性审查。此技能会确保做到以下四点:

  1. 每项发现都注明其违反的 WCAG 准则及等级——而不是给出含糊的建议。
  2. 每项发现都标注严重程度,依据问题对访问造成的阻碍程度进行判断——以便确定处理优先级。
  3. 每项发现都提供具体的修复方案——明确指出标记或设计需要如何更改。
  4. 审计系统全面——覆盖下方的六个类别,确保能发现那些不那么明显的问题(焦点顺序、标题层级、表格语义、动效等)。

WCAG 基础

POUR 原则——每项审计内容都对应以下四项原则之一:

  • 可感知——内容必须能通过至少一种感官(视觉、听觉等)获取
  • 可操作——所有交互都必须在不使用鼠标的情况下正常运行(键盘、开关、语音)
  • 可理解——内容和 UI 必须清晰且符合预期
  • 健壮——内容必须能在不同浏览器、设备和辅助技术中正常使用

合规等级:

  • A 级——最低要求;缺失这些要求会造成完全的障碍(例如没有替代文本、无法使用键盘访问)。
  • AA 级——大多数组织必须达到的法律标准;所有审计的默认目标。
  • AAA 级——进阶目标;仅在能带来较高价值时选择性采用。

默认审计目标:WCAG 2.1 AA 级。


审计清单

逐一检查每个类别——漏掉实际问题的主要原因就是审查不完整。每项违规都要标明WCAG 准则、严重程度(见下方模型)和修复方案。

1. 颜色与对比度
检查项要求备注
正文与背景≥ 4.5:1(AA)/7:1(AAA)适用于 UI 中的所有文本:按钮、标签、卡片、导航
大号文本(≥ 18pt 或 ≥ 14pt 粗体)≥ 3:1
图标(信息性或交互式)≥ 3:1装饰性图标除外
输入框边框与周围背景≥ 3:1包括焦点指示器
图片上的文本文本与其背后的图片区域之间 ≥ 4.5:1必要时使用半透明叠层
选中状态与普通文本相同的比例
禁用元素不受对比度规则约束但仍须能识别出其处于非激活状态
Logo 文本不受约束但保持对比度仍是良好做法
仅用颜色区分❌ 绝不可始终搭配图标、图案、标签或文本
强烈对比(纯黑对白色)不建议使用 #333 搭配 #F8F8F8——对比度高于 AA 标准,同时减轻眼部疲劳

不要只依赖颜色:错误状态需要图标和文本,而不只是红色。图表需要图案或标签,而不只是颜色。


2. 排版与文本
检查项要求
正文字号≥ 16px
行长45–75 个字符(包括空格)
文本对齐遵循阅读方向(LTR → 左对齐;RTL → 右对齐)
标题在视觉上清晰醒目字号更大、字重更粗或颜色与正文不同
每页一个 <h1>仅用于页面标题
标题层级不跳过层级(h1 → h2 → h3,不能 h1 → h3)
语义化标题标签使用 <h1>–<h6>,不要使用经过样式化的 <div> 或 <p>
语言使用通俗易懂的语言,阅读水平适合中等教育阶段
惯用语与修辞手法避免使用,以免让屏幕阅读器用户和非母语者感到困惑
字体字形易于区分(0 与 O、1 与 l 与 I);x 高度较大

3. 表单
检查项要求
键盘访问每个字段、下拉菜单、复选框、单选框和按钮都可通过 Tab / Shift+Tab / Enter / 方向键导航
焦点指示器每个获得焦点的元素都要清晰可见 — 不要移除浏览器默认样式,除非提供替代样式
布局优先采用单列布局;多列会增加认知负担,并让屏幕阅读器用户感到困惑
输入框边界使用可见边框或背景 — 不要使用无边框输入框
标签放在字段外,不要只用占位符;最小字号为 16px;对比度为 4.5:1
占位符文本仅作补充 — 输入内容后会消失,因此不能作为唯一标签
自动补全为姓名、电子邮件、电话、地址和付款信息实现自动补全(HTML autocomplete 属性)
错误状态使用多种提示:图标 + 粗边框 + 针对字段的消息。不要仅依赖颜色
错误位置放在出错字段旁边 + 使用 aria-describedby 将字段与错误信息关联
错误摘要提交失败时显示在表单顶部,并提供指向每个出错字段的锚点链接
身份验证不要使用基于文本的 CAPTCHA — 使用魔法链接、OTP、通行密钥或生物识别。密码字段支持粘贴
移动设备单手操作将 CTA 放在下方中间区域;避免只将按钮放在右侧边缘

4. 链接与导航
检查项要求
链接标签描述明确、具体 — 使用“下载定价指南”,而不是“点击这里”或“了解更多”
在新窗口打开的链接在链接文本或 aria-label 中提醒用户:“在新标签页中打开”
文件链接标明类型和大小:“年度报告(PDF,2.5 MB)”
将原始 URL 作为链接文本❌ 绝不使用 — 屏幕阅读器会逐字符朗读
链接辨识度同时使用下划线和颜色(不能只用颜色)
焦点状态每个链接和交互元素都要有清晰、醒目的焦点环
href 属性所有 <a> 标签都必须有该属性 — 带有点击处理程序的 <div> 不是链接
语气与风格链接文本应符合产品的语气,但始终优先保证清晰易懂
帮助链接放置位置保持一致(页脚、页眉工具导航或固定的帮助图标)

5. 图像与多媒体
检查项要求
信息性图像使用 alt 属性提供有意义的描述
装饰性图像使用 alt=""(空值)— 告知屏幕阅读器跳过该图像
包含文本的图像替代文本 = 图像中的准确文本
自动播放❌ 默认禁用 — 必须由用户主动开始播放
媒体控件播放/暂停/停止/倒回/音量/静音/字幕 — 支持键盘操作,并具有足够的尺寸和对比度
视频字幕所有带音频的预录视频都必须提供字幕
音频文本稿所有纯音频内容都必须提供文本稿
闪烁内容❌ 不得出现频率超过 3 Hz 的闪烁内容,也不得出现任何频率的红色闪烁
动画(GIF、SVG、CSS)明暗条纹对不超过 5 组;提供暂停/停止方式
图标搭配文本标签;信息性图标需要 aria-label 或 title
滑动手势同时支持两个方向,或提供可替代的点击目标

6. 表格与列表
检查项要求
数据表格使用 <table> 元素——绝不将表格用于布局
表格标题紧跟在 <table> 开始标签之后放置 <caption>
表头单元格使用带有 scope="col" 或 scope="row" 的 <th>——绝不留空
复杂表格避免合并单元格和多级表头;必要时拆分为更简单的表格
单元格宽度使用 % 而不是 px——以便浏览器重新排版;绝不手动设置单元格高度
列表适当使用 <ul>、<ol> 或 <dl>——不要使用带样式的 <div> 行
无序列表用于项目顺序无关紧要的情况
有序列表用于顺序步骤、排名和说明
描述列表使用 <dl> / <dt> / <dd> 编写术语表、常见问题和键值元数据

严重程度评级

根据每个问题对访问的阻碍程度以及不符合的 WCAG 级别进行评级:

严重程度含义
严重完全阻碍部分用户访问。通常属于 A 级失败——无法使用键盘访问、信息性图片缺少替代文本、缺少字幕或存在键盘陷阱。发布前修复。
主要造成明显障碍;用户有时可以绕过问题,但不应被迫这样做。通常属于 AA 级失败——对比度低于 4.5:1、用占位符代替标签、仅通过颜色表示错误状态、缺少焦点指示器。
轻微问题明显但影响较小,或属于最佳实践 / AAA 级改进——行长稍短、纯黑文本过于刺眼、标签不够理想但仍可用。

有疑问时,应根据对用户的影响评级(是否会阻碍任务,还是仅造成不便?),而不是根据修复难易程度。


审核输出格式

## Accessibility Audit — [Component / Screen Name]
Context: [platform · WCAG target (default AA) · design or code]

### Critical (blocks access entirely)
- [Issue]: [what's wrong] → [fix] — WCAG [X.X.X]

### Major (significant friction)
- [Issue]: [what's wrong] → [fix] — WCAG [X.X.X]

### Minor (best practice / AAA)
- [Issue]: [what's wrong] → [fix] — WCAG [X.X.X]

### Passed ✓
- [what's already working]

结尾始终用一行总结说明整体 WCAG AA 合规状态,并指出达到合规所需的主要修复项。


如何做好审核

  1. 明确背景。 确定平台(Web / 移动端 / 原生)、目标级别(默认为 AA——只有在被要求时才审核 AAA),以及审核对象是设计还是运行中的代码(键盘顺序和 aria-* 等检查仅适用于代码)。
  2. 覆盖全部六个类别。 相比默认评审,这项技能的价值在于完整性——不要只检查对比度和替代文本。
  3. 按障碍评级,而非按工作量。 只需一行代码的 alt 修复也可能是严重问题。
  4. 明确说明修复方法。 给出确切的更改方式(标记、属性、比例或设计调整),不要只说“让它更易访问”。
  5. 说明工具的局限性。 自动扫描器只能发现约 30–40% 的问题——仍需手动审核焦点顺序、替代文本质量和阅读顺序。

推荐工具

自动扫描(可发现约 30–40% 的问题):

  • WAVE(浏览器扩展)——叠加显示视觉指示器,并注明违反的 WCAG 标准
  • axe DevTools(Chrome 扩展)——准确且适合开发者;由 axe-core 驱动
  • Google Lighthouse(Chrome DevTools → Lighthouse 标签页)——一次性检查无障碍性、SEO 和性能

设计中的对比度检查:

  • Able(Figma 插件)——对比度检查器 + 色盲模拟器
  • Stark(Figma / Sketch / Adobe XD)——对比度、视觉模拟器、焦点顺序和替代文本注释
  • WCAG Color Contrast Checker(Chrome 扩展)——在浏览器中实时检查比例

屏幕阅读器测试:

  • VoiceOver(macOS/iOS,内置)——使用 VO + arrow keys 导航
  • NV Access / NVDA(Windows,免费)——使用最广泛的 Windows 屏幕阅读器

癫痫风险检测:

  • PEAT(可下载)——分析视频 / 动画,检测可能诱发光敏性癫痫的因素
  • Harding Test——面向广播 / 视频内容的在线付费服务

常见的应做与不应做模式

❌ 不应做✅ 应做
仅用红色文本表示错误红色边框 + 警告图标 + 描述性消息
<a>Click here</a><a>Download the onboarding guide (PDF, 1.2 MB)</a>
<img src="chart.png"> (无 alt)<img src="chart.png" alt="Bar chart showing Q3 revenue by region">
为装饰性图片添加 alt 文本<img src="bg-swoosh.svg" alt="">
纯白背景 #FFF 上使用纯黑色 #000米白色背景 #F8F8F8 上使用深灰色 #333
仅使用占位符作为标签在字段上方设置持久标签 + 可选占位符
从 <h1> 跳到 <h3>始终按 <h1> → <h2> → <h3> 的顺序使用
用表格进行页面布局使用 CSS Grid 或 Flexbox 进行布局;仅用 <table> 展示数据
自动播放视频在顶部显示控件;由用户启动播放
图表图例仅依赖颜色区分除颜色外,添加图案、形状或数据标签
只报告明显的问题检查全部六个类别;按障碍程度评级;注明所依据的标准

来源课程(Uxcel)

评论

支持 Markdown