指南

什么是网页无障碍?WCAG与无障碍设计详解

网页无障碍是指构建网站和应用,使残障人士也能使用它们,无论他们是盲人并使用屏幕阅读器、无法使用鼠标、视力低下或色盲、听障,还是有认知或学习障碍。在实践中,这归结为:为图片提供文字替代、保证足够的颜色对比度、为表单提供正确的标签,以及所有功能都能只用键盘操作。它的国际标准是WCAG,即W3C发布的网页内容无障碍指南。

无障碍(Accessibility)常缩写为a11y:即“a”,中间11个字母,然后是“y”。

用AI搭建时,无障碍为什么重要

AI搭建工具很擅长生成看起来正确的应用。无障碍主要关乎那些截图中看不出来的东西:按钮是否真的是按钮,输入框是否有屏幕阅读器能够读出的标签,你能否用Tab键找到菜单。

因此,有必要关注以下几点:

  • 它很容易被忽略。 一个自定义样式的下拉菜单可能看起来很完美,却无法在不使用鼠标的情况下操作。除非你去测试,否则不会注意到。
  • 尽早做到更省力。 从第一条提示就要求无障碍组件,成本几乎为零。事后为完成的应用补救,则需要改动每一个界面。
  • 它对所有人都有益。 字幕帮助身处嘈杂环境的人,良好的对比度帮助在阳光下使用手机的人,清晰的标签也能让每个人更快地填完表单。
  • 它与SEO相关。 恰当的标题层级、描述性的链接和替代文字,同样有助于搜索引擎理解你的页面。参见为AI搭建的网站做SEO。
  • 它可能是法律要求。 取决于你的运营地点和服务对象,无障碍可能是一项法律义务。

一个日常类比

可以把它想象成一座建筑的入口。

台阶对许多人来说没有问题。但坡道对轮椅使用者有用,对推着婴儿车的父母、拉着手推车的送货员和拖着行李箱的旅客也同样有用。自动门、清晰的指示牌、电梯按钮上的盲文以及良好的照明,都能为某些人消除一道障碍。

网页无障碍就是数字空间里的同样道理:它是你应用的坡道、指示牌和扶手。而且和建筑一样,在设计图中加入坡道,远比混凝土凝固后再加装要容易得多。

WCAG概览

WCAG由W3C的网页无障碍倡议(WAI)发布。当前版本为WCAG 2.2,于2023年10月首次发布。它向后兼容:符合WCAG 2.2的内容同样符合2.1和2.0,W3C也鼓励使用最新版本。WCAG 2.2还已被批准为国际标准ISO/IEC 40500:2025。而全新的WCAG 3目前仍是早期草案,尚未成为正式标准。

WCAG由四项原则构成,常用记忆词为POUR:

原则含义示例
可感知(Perceivable)人们可以通过所用的感官获取内容图片的替代文字、视频的字幕、足够的对比度
可操作(Operable)人们可以使用控件并进行导航键盘可访问、可延长的时间限制、可见的焦点
可理解(Understandable)内容和行为易于理解清晰的标签、有用的错误信息、一致的导航
健壮(Robust)能与多种浏览器和辅助技术配合工作正确使用HTML元素、控件的名称和角色正确

每条指南都有可测试的成功标准,分为三个等级:

  • A级:最低要求。未达到此级别会让一些人完全无法使用。
  • AA级:标准目标,也是大多数法律和政策所指的等级。
  • AAA级:最高等级。在某些地方值得追求,但W3C不建议要求整个网站都达到此级别,因为部分内容无法满足。

WCAG 2.2在2.1的基础上新增了九项成功标准,其中包括AA级的目标尺寸(最小):可点击目标通常应至少为24×24 CSS像素,但也有例外;以及无障碍认证(最小),它限制依赖记忆或拼图的登录步骤,例如要求重新输入密码却不允许粘贴。它还移除了已过时的“解析”标准。

实例:一个注册表单

以下是AI可能生成的一个注册表单,以及无障碍检查会发现的问题:

问题受影响的人群修复方法
输入框用占位文字(“Email”)代替标签屏幕阅读器用户;开始输入后忘记该字段用途的人为每个输入框添加可见的<label>并正确关联
白色背景上的浅灰色文字,对比度远低于4.5:1视力低下的人、在户外的人使用更深的文字,满足4.5:1的对比度要求
错误仅以红色边框显示色盲用户、屏幕阅读器用户在字段旁显示文字提示,并让屏幕阅读器读出
“注册”是样式化的<div>,而不是<button>键盘和屏幕阅读器用户无法激活它使用真正的<button>元素
用Tab键切换字段时没有可见的轮廓键盘用户无法判断当前位置添加清晰的焦点样式
标志图片没有替代文字屏幕阅读器用户只听到一个文件名添加替代文字,例如“Acme Bookings”

这些修复几乎不会改变表单的外观,但会决定一些人能否使用它。

关键术语

术语含义
屏幕阅读器(Screen reader)将屏幕内容朗读出来或输出到盲文显示器的软件,例如VoiceOver、NVDA或JAWS。
替代文字(Alt text)对图片的文字描述,供屏幕阅读器朗读。纯装饰性图片使用空的替代文字,以便被跳过。
对比度(Contrast ratio)文字与背景颜色之间的差异程度,范围从1:1到21:1。
键盘导航(Keyboard navigation)使用Tab、Enter、空格和方向键而非鼠标来操作网站。
焦点指示器(Focus indicator)显示键盘当前所在元素的可见轮廓。
语义化HTML(Semantic HTML)为用途选用正确的元素,如<button>、<nav>、<h2>,使浏览器和辅助技术能够理解页面。
ARIA为辅助技术描述自定义控件的附加属性。应谨慎使用;优先使用原生HTML元素。
辅助技术(Assistive technology)人们用来访问电脑的工具,从屏幕阅读器到开关设备和语音控制。

常见误解

  • “无障碍只对盲人有意义。” 它涵盖视觉、运动、听力、言语和认知方面的残障,也包括手臂骨折等暂时性情况。
  • “无障碍的网站看起来很朴素。” 无障碍只对对比度、焦点样式、文字大小等少数方面有所约束;外观良好的无障碍网站才是常态,而不是例外。
  • “自动检测工具打了100分,就大功告成了。” 自动化工具只能发现部分问题。替代文字是否真正有意义,或某个流程在屏幕阅读器下是否合理,需要人工检查。
  • “无障碍插件能让我们合规。” 叠加的工具栏无法修复代码中缺失的标签或损坏的键盘访问。请修复源头。
  • “我们没有残障用户。” 你可能只是不知道。许多残障并不明显,遇到障碍的用户通常会直接离开。

向你的AI搭建工具提出什么要求

  • “按照WCAG 2.2 AA级标准构建。”
  • “使用语义化HTML:真正的按钮、链接、按顺序排列的标题,并为每个表单字段提供标签。”
  • “确保每个可交互元素都能只用键盘操作,并具有可见的焦点样式。”
  • “检查所有文字和图标颜色的对比度:普通文字4.5:1,大号文字和图标3:1。”
  • “为有信息价值的图片添加有意义的替代文字,为装饰性图片添加空的替代文字。”
  • “以文字形式显示表单错误,并与字段关联,而不只依靠颜色。”
  • “动画应遵循用户的减少动态效果(reduced-motion)设置。”
  • “运行一次自动化无障碍检查,并列出它无法检测的内容,以便我手动核对。”

然后亲自测试:把鼠标放在一边,只用Tab、Shift+Tab、Enter和空格键完成主要流程。试试手机自带的屏幕阅读器读取主页。把浏览器缩放到200%,看看是否有任何内容出现问题。

Mythex中的无障碍

Mythex不包含专门的无障碍检查工具,因此请把无障碍视为提示词和测试工作的一部分。从第一条提示就要求WCAG 2.2 AA级,在预览中用键盘检查结果,并在发布前使用/test让智能体点击主要流程进行测试,参见应用测试。SEO配方同样要求语义化标题和有意义的替代文字,两者同时服务于这两个目标。

如需动手操作的检查清单,请参阅如何让你的网站无障碍。关于设计,请阅读如何用AI设计好看的应用;上线前,请阅读如何在上线前测试你的应用。W3C官方的WCAG概览是权威来源。

常见问题

简单来说,什么是网页无障碍?

网页无障碍是指设计和构建网站及应用,使残障人士能够感知、理解、导航和使用它们。这包括使用屏幕阅读器的盲人、无法使用鼠标的人、视力低下或色盲的人、听障用户,以及有认知障碍的人。

什么是WCAG?

WCAG(网页内容无障碍指南)是网页无障碍的国际标准,由W3C发布。当前版本为WCAG 2.2,于2023年10月首次发布。其成功标准分为A、AA和AAA三个等级,而大多数机构和法律所指的目标是AA级。

WCAG对颜色对比度有什么要求?

在AA级,普通文字与背景的对比度至少需要4.5:1;大号文字(大约18磅,或加粗的14磅)至少需要3:1。图标和控件的可见部分,与其相邻内容的对比度至少需要3:1。

网页无障碍是法律要求吗?

在许多地方、对许多机构来说,是的。法律因国家和行业而异,例如《欧洲无障碍法案》涵盖了欧盟内许多面向消费者的数字产品和服务。请核实适用于你的规定,或咨询法律顾问。

无障碍辅助插件能让我的网站合规吗?

不能仅靠它。这类插件会在你的网站上叠加一个工具栏,但无法可靠地解决底层问题,例如缺少标签、键盘无法导航或结构不清晰。可靠的做法是修复网站的代码和内容。

Mythex · Pricing · 用 AI 构建任何东西 · 网站和应用模板 · Mythex 对比 · AI 应用构建术语表 · 免费的 AI 应用构建工具 · English

English አማርኛ العربية Български বাংলা Bosanski Català Čeština Dansk Deutsch Ελληνικά Español Español (España) Eesti فارسی Suomi Français Français (Canada) ગુજરાતી हिन्दी Hrvatski Magyar Հայերեն Bahasa Indonesia Íslenska Italiano 日本語 ქართული Қазақ тілі ಕನ್ನಡ 한국어 Lietuvių Latviešu Македонски മലയാളം Монгол मराठी Bahasa Melayu မြန်မာ Norsk bokmål Nederlands ਪੰਜਾਬੀ Polski Português (Brasil) Português (Portugal) Română Русский Slovenčina Slovenščina Soomaali Shqip Srpski Svenska Kiswahili தமிழ் తెలుగు ไทย Tagalog Türkçe Українська اردو Tiếng Việt 繁體中文(香港) 繁體中文(台灣)