该技能用于构建或审查 UI 时的无障碍实践,通用规则内联,特定组件模式放在 references/ 目录中按需读取。
用途:在编写、修改或规划任何组件、页面、表单、对话框、浮层或交互元素时,提供符合 WCAG 2.2 AA 的实现指引。
主要能力:
- 语义化优先:用原生元素匹配行为(如 <button> 用于操作、<a href> 用于导航、<input> 用于输入、<select> 用于选择、<dialog> 用于浮层),避免给 div 或 span 绑定点击事件当作交互元素。
- 键盘可操作性:所有交互元素可通过 Tab 到达并用键盘操作,遵循 Enter/Space、方向键、Escape 的标准映射,不使用大于 0 的 tabindex。
- 焦点可见:交互元素必须有可见的 :focus-visible 指示,焦点指示需满足 3:1 非文本对比度。
- 颜色对比:正文文本 ≥4.5:1,大文本 ≥3:1,非文本 UI 元素 ≥3:1;颜色不能作为唯一信息传递方式。
- 文本替代:信息性图片提供有意义的 alt,装饰性图片 alt="",仅图标控件在控件上加 aria-label、在图标/SVG 上加 aria-hidden="true",复杂图像用 aria-describedby 或相邻文本提供长描述。
- 可访问名称:每个交互元素需有可发现的名称,含可见文本的控件其可访问名称须包含该可见文本。
- 视觉隐藏内容:给出 sr-only 的 CSS 实现,并说明何时使用。
- 页面级结构:每页一个 <main>、一个 <h1>,landmark 重复时加唯一 aria-label,页面标题描述性并随 SPA 路由更新,声明语言,提供跳转链接。
- 动态内容:通过 aria-live 区域播报验证结果、错误、加载、保存确认、过滤计数、toast 等;容器需先存在于 DOM 再注入内容;role="status" 与 role="alert" 已隐含相应属性。
- 动画与运动:尊重 prefers-reduced-motion,采用默认无动效、用户未选择减弱时才启用动效的模式;闪烁不超过每秒三次,自动播放超 5 秒的动画可暂停或停止。
- 禁用控件:优先保持可用并在激活时校验,必须呈现不可用时用 aria-disabled="true" 而非 HTML disabled。
- 目标尺寸与触摸:交互目标至少 24×24 CSS 像素,建议 44×44 用于触摸;路径手势需有单指针替代。
- 响应式与重排:320 CSS 像素宽度下无水平滚动,文本可放大 200% 不裁剪不重叠。
- 键盘快捷键:单字符快捷键需可禁用、可加修饰键重映射或仅在相关组件聚焦时生效。
使用方式:通用规则直接遵循;遇到表单、浮层、菜单、媒体、复杂模式等具体功能时,读取 references/ 目录下对应文件(forms.md、overlays.md、menus.md、media.md、complex-patterns.md)。若组件不匹配任何参考,查阅 WAI-ARIA Authoring Practices Guide 模式索引;若无文档化模式,说明打算怎么做并请用户确认后再实现。
限制:资料未提供安装命令、收费或价格信息、支持平台、官方文档 URL 及效果数据,这些暂未提供。