用途
该技能面向前端开发中的无障碍(可访问性)实现,按框架整理常见无障碍陷阱与对应修复模板,覆盖 React、Next.js、Vue、Angular、Svelte 和 Tailwind CSS。它适合在编写或审查组件时,快速对照具体框架的典型问题并套用修复写法。
主要能力
React / Next.js
列出常见陷阱及修复:
- 在
<div>上使用onClick:不可键盘访问,应改用<button>,或添加role="button"、tabIndex={0}、onKeyDown。 dangerouslySetInnerHTML:可能注入不可访问内容,需审计注入 HTML 的 ARIA、标题、替代文本。- 以
React.Fragment作为根:可能破坏地标树,需确保片段不打断地标嵌套。 - 列表缺少
key:重渲染时可能导致焦点丢失,交互列表应使用稳定 key(而非数组索引)。 - Portal 未做焦点陷阱:焦点可能逃逸到背景,应将 Portal 内容包裹在 FocusTrap 组件中。
useEffect焦点管理:挂载时焦点可能未触发,应使用useRef+useEffect并配置正确的依赖数组。
修复模板涵盖:div 改为语义化 button、Next.js Image 添加 alt、路由切换时焦点管理、新标签页链接添加 rel="noopener noreferrer" 与屏幕阅读器提示。
Vue
常见陷阱:
v-html渲染用户内容:可能注入不可访问标记,需净化并审计。- 在 live region 上使用
v-if:会将元素从 DOM 移除,破坏播报,应改用v-show。 <transition>未处理焦点:内容过渡时焦点丢失,应在@after-enter钩子中管理焦点。<teleport>到 body:内容位于应用地标树之外,需为传送内容添加地标角色。
修复模板涵盖:live region 使用 v-show、过渡后通过 @after-enter 聚焦模态框。
Angular
常见陷阱:
[aria-label]绑定:无效,ARIA 不是属性,应使用[attr.aria-label]。*ngFor缺少trackBy:列表重渲染时焦点丢失,应添加trackBy函数。- 缺少
LiveAnnouncer:路由变化未被播报,应注入LiveAnnouncer并播报导航。 OnPush+ live region:变更检测可能不触发,应使用ChangeDetectorRef.markForCheck()。
修复模板涵盖:ARIA 属性绑定、带 trackBy 的 ngFor、路由变化播报。
Svelte
常见陷阱:
{#if}未管理焦点:内容出现时焦点丢失,应使用use:action聚焦新内容。transition:未检查动效偏好:动画无视用户偏好播放,应添加prefers-reduced-motion检查。- 非交互元素上使用
on:click:不可键盘访问,应改用<button>或添加键盘处理。
修复模板涵盖:div 改为 button、根据 prefers-reduced-motion 调整过渡参数。
Tailwind CSS
常见陷阱:
outline-none:移除焦点指示器,应搭配ring-2 ring-offset-2 focus-visible:ring-blue-500。text-gray-400配bg-white:对比度不达 4.5:1,应使用text-gray-600或更深。- 缺少
motion-reduce:变体:动画忽略用户偏好,应添加motion-reduce:transition-none。 - 缺少
focus:样式:无可见焦点指示器,应添加focus:ring-2 focus:ring-blue-500。 - 缺少
sr-only:屏幕阅读器文本不可用,应添加<span class="sr-only">description</span>。
同时提供对比度安全的 Tailwind 配色对,例如 bg-white + text-gray-600(4.55:1)、bg-white + text-gray-700(6.62:1)、bg-gray-50 + text-gray-700(6.29:1)、bg-gray-900 + text-gray-300(5.92:1)、bg-blue-600 + text-white(5.23:1)、bg-red-600 + text-white(4.54:1)、bg-green-700 + text-white(4.58:1)。
修复模板涵盖:可见焦点指示器、足够对比度文本、尊重动效偏好的过渡。
使用方式
资料未提供该技能的具体安装命令、调用方式或集成步骤,暂未提供。
适用场景
- 在 React、Next.js、Vue、Angular、Svelte 项目中编写或审查组件时,对照常见无障碍陷阱进行修正。
- 使用 Tailwind CSS 时检查焦点样式、颜色对比度和动效偏好。
- 作为团队无障碍修复模板的参考。
限制
资料仅提供各框架的陷阱对照与代码模板,未说明其自动化程度、检测范围、支持的版本、收费方式或平台限制,暂未提供。