由A11yGuard (LX AI)

对比度和ARIA在情感编码应用中的应用

情感编码UI在两个方面常常失败,这两个方面扫描仪很少一起捕捉到:对比度数学和可访问名称。一个组件可以通过颜色审计,但如果其角色不正确或其名称为空,则仍然无法使用。两者在重新生成时都会再次中断,因此修复应该属于检查清单,而不是一次性编辑。

对比度数学在生成主题中实际上如何破坏

当模型创建一个调色板时,它通常会复制一个情绪板:柔和的石板文字,柔和的色块,半透明的卡片。在设计师的监视器上看起来很好,但是在实际内容到达的那一刻,它就会在WCAG 2.2中失败。正文文本需要与其背景具有4.5:1的对比度比率(成功标准1.4.3)。大型文本可以使用3:1。生成器不运行该数学运算;它们选择“感觉良好的”十六进制值。

第二种故障模式是您无法在Figma导出中看到的背景。文本在英雄图像,渐变洗涤或玻璃化面板上需要渲染的背景,而不是命名为bg-surface的令牌。采样字形下的像素,否则您将清除令牌审计并仍然发布不可读的副本。图表和数据墨水具有相同的陷阱;Smashing Magazine关于图表对比度的文章展示了如何在不将每个图表变成彩虹色的情况下更改视觉设计选择(图表设计的无障碍标准)。

非文本对比度是沉默的双胞胎

成功标准1.4.11(非文本对比度)要求UI组件边界,图形对象和状态(如焦点指示器)具有3:1的对比度。一个看起来“高级”的细微1px边框通常会失败。焦点环设置为outline:2px solid rgba(15,118,110,.35)即使标签文本通过4.5:1也会失败。仅依赖浅灰色字形与白色对比的图标仅控制也是同一类错误。将边框,图标和焦点颜色视为具有发布比率的首选令牌,而不是装饰性后果。WCAG 2.2快速参考是重新检查哪些标准在AA中应用的最快地方。

令牌优于一次性十六进制补丁

持久修复是无聊的:定义具有测量比率的语义颜色令牌(文本-主,文本-淡,边框-强,焦点-环)与每个允许的背景,然后禁止模型在组件文件中发明十六进制字符串。将禁止规则放在提示和CI中。如果重新生成可以将color:#94a3b8重写为按钮标签,则您的“修复”从未修复。将令牌与CSS变量层配对,以便暗模式和营销主题继承相同的约束。

无障碍名称不是可见标签

屏幕阅读器宣布控件的无障碍名称,而不是SVG路径数据。一个图标按钮显示一个垃圾字形,没有文本内容,没有aria-label,也没有关联的<label>,它变成了“按钮”,没有目的。这是一个命名失败,而不是对比度失败,这就是为什么颜色审计保持绿色而键盘用户停滞的原因。

名称计算顺序由无障碍树定义:内容文本,标记的引用,然后作者提供的标签,例如aria-label。生成器通常发出字形和Tailwind类并停止。它们还会发明重复的名称(“关闭”在模态栈中的每个消除控件上)或描述图标隐喻而不是操作的名称(“垃圾桶”而不是“删除发票”)。更喜欢与可见的可用性相匹配的操作语言。

名称在重新生成后消失的地方

重新生成会擦除手动添加的内联aria-label值,因为模型将其视为可选噪音。通过以下方式生存:

- 将图标映射保持在一个模块中,该模块始终将字形+名称字符串配对 - 当空间允许时,在图标旁边使用可见文本(名称免费) - 当交互元素具有空的无障碍名称时,CI失败 - 拒绝引入<div onClick>而没有角色和名称包的PR

WAI的基本概述仍然是关于为什么名称,角色和状态必须一起旅行的最佳简短入门(WAI无障碍基础)。

当ARIA有帮助 —— 和当它隐藏bug时

本地HTML已经暴露了角色、键盘行为和许多状态。一个真正的<button>是可聚焦的、在Enter和Space上激活的,并参与表单。一个<div role="button" tabindex="0">,即使模型粘贴了它,也仍然需要那些键处理程序、相关时的按下或禁用状态和可访问的名称。跳过任何一个,辅助技术就会宣布一个按钮在Space上不起作用。ARIA作者指南(APG)是为您真正需要自定义小部件的情况而存在的;它不是重新样式化div以使其成为每个控件的许可。

常见的ARIA错误在vibe编码的标记中

- 元素错误的角色:<a href>上的role="button",或按钮提交表单上的role="link" - 装饰性ARIA:aria-label重复可见文本并混淆一些AT组合 - 过时状态:aria-expanded="true"在客户端渲染切换面板关闭后留下 - 地标垃圾邮件:五个role="navigation"区域没有名称,因此跳过列表变成噪音 - 虚荣的实时区域:每个toast上的aria-live="polite",使页面喋喋不休

WAI-ARIA 1.2推荐描述了角色和属性的本体论;当您必须扩展超出HTML时使用它,而不是作为每个节点的默认层(WAI-ARIA 1.2)。

情况 | 更喜欢 | 避免 主动作 | <button type="button"> | 没有键的<div role="button"> 导航到URL | <a href> | 只调用router.push没有URL的按钮 图标仅控件 | 可见文本或从地图中获取的稳定aria-label | 缺少标题的裸SVG 自定义组合框 | APG模式 + 键盘映射 | 从聊天答案中复制的自定义角色

生成器忘记的键盘路径

焦点顺序、可见焦点和跳过链接从一次性布局中丢失。标准2.4.7需要可见的焦点指示器。标准2.4.11(焦点不被遮挡 —— 最小),WCAG 2.2中的新标准,需要粘性标题、Cookie横幅和浮动聊天小部件不完全隐藏焦点控件。从上到下Tab生成的页面。确认顺序与阅读顺序匹配。确认没有控件被困在覆盖层后面。确认焦点环满足1.4.11与其后面坐着的任何东西。

短手动键盘通行(15分钟)

- 拔掉鼠标。打开页面在一个干净的配置文件中。 - 从浏览器Chrome到文档Tab。有一个跳过链接可以工作吗? - 到达每个主动作而不使用箭头键民间传说组件从未实施。 - 使用Escape打开和关闭每个模态。焦点返回到调用者吗? - 触发粘性标题和Cookie横幅。您仍然可以看到焦点控件吗? - 使用屏幕阅读器(NVDA或VoiceOver)击中每个图标按钮。名称是否与操作匹配?

该通行证捕获Lighthouse不会捕获的内容。自动化工具是第一道过滤器;它们不是符合证书。对于招聘和自动化决策工具,美国指南也提醒建设者,人工智能功能可能会在接口排除使用辅助技术的人时创建残疾歧视风险(ADA.gov AI指南)。产品UI不仅因为模型编写了JSX而豁免于此类思考。

确保检查在重新生成后仍然有效

因为重新生成会清除手动修复的补丁,所以持久的控制看起来像基础设施:

- 使用经过测量的设计令牌和对比度,在单元测试或stylelint插件中进行检查 - 始终发出名称和焦点样式的组件原语(IconButton,TextField) - 在拉取请求上使用CI无障碍门(axe或等效),在空名称和对比度上失败 - 禁止原始十六进制代码和没有显式异常标志的div-as-button的提示约束 - 在每个垂直方向上进行人工键盘测试,并将其记录为检查列表项,而不是情绪

将生成的标记视为不可信的草稿输出。以与审查周末黑客马拉松中提交的初级PR相同的方式进行审查:假设缺少名称,假设戏剧性的ARIA,假设淡彩文本

决策标准:在令牌,原语或页面代码中修复?

当错误报告到达时,请使用此顺序:

- 如果许多页面共享错误的哑文本颜色,请修复令牌并重新测量比率。 - 如果一种控件类型缺少名称(所有图标按钮),请修复原语并删除本地修复补丁。 - 如果单个营销英雄在照片上失败,请修复该页面的叠加层或文本处理。 - 如果ARIA被粘贴到错误的元素上,请在编写更多属性之前用本机控件替换它.

页面级ARIA修复是最不持久的。它们也是情绪编码会话喜欢发出的补丁。将修复推向上层

这不是什么

本文不是您产品的WCAG合规证书。它不是法律建议,也不声称运行A11yGuard(或任何扫描器)可以使网站成为"ADA兼容"或"100%可访问"。自动对比度和ARIA检查可以捕获可测量的失败;它们会错过关于阅读顺序、拖拽替代和名称是否可理解的判断。我们不会编造客户Logo、转换提升或"永远不会错过对比度错误"的保证。产品的真实角色是一个快速的第一次传递,加上您仍然拥有的检查清单。

结论

对比度数学和可访问名称独立失败并一起重新生成。锁定令牌,优先使用本地控件,在必须自定义时验证ARIA与APG,并在发布仪式中保持键盘传递。使用下面的参考资料,当有关比例或标准的声明存在争议时——规范文本优先于聊天模型的记忆。

参考资料

- WCAG 2.2 - WCAG 2.2 快速参考 - WAI 无障碍基础 - ARIA 作者实践指南 (APG) - WAI-ARIA 1.2 - Smashing Magazine — 无障碍标准和图表设计 - ADA.gov — 人工智能和残疾歧视指南

相关文章

- 为人工智能生成的 UI 准备的 WCAG 2.2 清单 (2026) - 探索完整的人工智能微 SaaS 主题矩阵 →

为什么我的组件通过颜色审计,但仍然感觉有问题?

颜色审计检查文本比例,但不检查控件是否具有可访问名称、可见焦点状态或键盘处理程序。这些差距在生成的标记中很常见,并不是对比度问题。

ARIA是否足以使div像按钮一样表现?

否。具有role="button"的div仍然需要tabindex、Enter/Space键处理程序和可访问名称。原生<button>提供了所有三个。除非您有特定的理由不使用,否则请使用原生元素。

如何防止修复在重新生成时消失?

在设计系统中锁定颜色和间距令牌,以便模型无法生成值,并在CI中运行自动无障碍门。将生成的UI视为草稿,并以与审查不受信任输出相同的方式进行审查。

什么是3:1非文本对比度规则?

标准1.4.11要求UI组件边界、图标和焦点指示器达到3:1与相邻颜色的对比度。它与4.5:1文本规则是分开的,并且经常被生成的主题遗漏。

仅供决策参考,不是法律建议或无障碍合规证书。

← 返回博客

这次结果有帮助吗?反馈