什么是网站无障碍设计标准

网站无障碍设计

网站无障碍设计(Web Accessibility,通常简称 a11y)是为了让残障人士(视障、听障、行动不便、认知障碍等)也能平等、无障碍地访问和使用网站。它不仅是道德责任,在很多国家已经是法律要求(如中国的《无障碍环境建设条例》、美国的 ADA 和 Section 508、欧洲的 EN 301 549 等)。

一、必须遵循的国际标准

最核心的标准是 WCAG 2.1(可推荐使用 WCAG 2.2,已于2023年发布),分为三个等级:

  • A(最低,必做)

  • AA(大多数国家法律要求达到这个级别,中国目前也推荐 AA)

  • AAA(最高级别,部分场景需要)

中国自己的标准:

  • 《信息技术 互联网内容无障碍可访问性技术要求与测试方法》(GB/T 37668 - 2019)

  • 《信息无障碍 身体功能差异人群 网站设计无障碍技术要求》(GB/T 37669 - 2019)

  • 《信息无障碍 身体功能差异人群 网站设计无障碍评级测试方法》(GB/T 37781 - 2019)

这些国标基本等同采用 WCAG 2.1 AA 级别。

二、实际开发中最重要、最常见的无障碍要求(必做清单)

1. 感知性(Perceivable)

  • 所有图片、图标必须有有意义的替代文本(alt)

    • 装饰性图片:alt=""

    • 有意义的图片:描述内容,例如 alt="2025年春节放假通知海报"

  • 视频要有字幕(闭路字幕),最好有音轨描述(Audio Description)

  • 色盲友好:不要仅用颜色传递信息(如“红色表示错误”要同时加文字或图标)

  • 对比度至少 4.5:1(AA),大文字 3:1

    • 工具:https://webaim.org/resources/contrastchecker/

2. 可操作性(Operable)

  • 全部功能都可以用键盘操作(Tab、Enter、Space、箭头键)

    • 不能有“键盘陷阱”(卡住出不来)

    • 下拉菜单、模态框、轮播图必须能用键盘操作和关闭(Esc 键)

  • 焦点可见::focus 状态要有明显可见的轮廓

  • 不要使用自动轮播或给足够时间/暂停按钮

  • 页面要有跳过导航链接(Skip to main content)

  • 页面标题()要有意义且唯一

  • 链接文字要有意义(避免“点击这里”,改成“查看2025年招生简章”)

3. 可理解性(Understandable)

  • 语言声明:

  • 表单要有明确标签()

  • 错误提示要明确告诉用户哪里错了、怎么改

  • 一致的导航和操作习惯

4. 健壮性(Robust)

  • 代码语义化,使用正确的 HTML 标签

    • , , , , ,

    • 按钮用 ,不要用

      模拟

    • 正确使用标题层级(h1→h2→h3,不要跳级)

  • 通过 W3C 验证器检查

  • 支持屏幕阅读器(NVDA、VoiceOver、旁白)

三、中国网站常见但不符合无障碍的错误(一定要避免)

  • 验证码全是图片且无文字备选

  • 轮播图自动播放且无法暂停

  • 纯色块表示状态(如绿色=通过,红色=不通过)没有文字

  • 重要图片 alt 为空或写“图片”

  • 只有微信/支付宝登录,没有其他方式

  • 弹窗无法用 Esc 关闭

  • 键盘焦点顺序乱七八糟

四、快速自测工具

  1. 浏览器插件:

    • axe DevTools(最推荐)

    • WAVE

    • Accessibility Insights for Web

  2. 屏幕阅读器测试:

    • Windows + NVDA(免费)

    • Mac + VoiceOver(⌘ + F5)

    • 手机:Android TalkBack / iOS 旁白

  3. 键盘测试:拔掉鼠标,只用 Tab、Enter、箭头键走一遍

五、一句话总结优先级

如果时间紧,先把这 6 件事做了,基本能过大多数检测:

  1. 所有图片加 alt

  2. 对比度达标

  3. 键盘能完整操作(包括关闭弹窗)

  4. 语义化 HTML(标题、按钮、导航)

  5. 表单有 label 和错误提示

  6. 视频加字幕

做到 WCAG 2.1 AA 级别,在中国基本不会被残联或网信办约谈,也能通过大多数政府采购和招投标的无障碍要求。

需要我给你一份完整的《网站无障碍检查清单(中英文对照 + 代码示例)》吗?可以直接发给开发团队。


下面是一份最实用、最常考、开发必须直接抄走用的无障碍代码示例合集(全部符合 WCAG 2.1 AA + 中国 GB/T 37668 - 2019),直接复制到项目里就能大幅提升无障碍得分。

  1. 正确的图片 alt(最常见扣分项)

<!-- 有意义图片 -->
<img src="dog.jpg" alt="一只穿红衣服的柯基在草地上玩飞盘">

<!-- 带说明的图标 -->
<img src="success.svg" alt="提交成功"> <span class="sr-only">提交成功</span>

<!-- 装饰性图片(必须清空) -->
<img src="decorative-line.png" alt="" role="presentation">

<!-- 复杂图片(如信息图表) -->
<img src="2025-sales-chart.png" alt="2025年各季度销售额对比图,一季度150万,二季度180万,三季度220万,四季度280万">

2. 语义化 HTML 结构(屏幕阅读器最爱)

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>2025年招生简章 - 北京某某大学</title>
</head>
<body>
  <!-- 跳过导航(必须放在最前面) -->
  <a href="#main">跳到主要内容</a>

  <header>
    <nav aria-label="主导航">
      <ul>
        <li><a href="/">首页</a></li>
        <li><a href="/admission" aria-current="page">招生信息</a></li>
      </ul>
    </nav>
  </header>

  <main id="main">
    <h1>2025年本科招生简章</h1>
    <!-- 内容 -->
  </main>

  <footer>
    <p>© 2025 北京某某大学</p>
  </footer>
</body>
</html>

3. 可键盘操作的轮播图(自动轮播必须能暂停)

<div class="carousel" role="region" aria-label="校园风光轮播图">
  <button aria-label="暂停轮播" id="pauseBtn">暂停</button>
  
  <div class="slides">
    <figure>
      <img src="1.jpg" alt="图书馆外观">
      <figcaption>现代化的大学图书馆</figcaption>
    </figure>
    <!-- 更多 -->
  </div>

  <button aria-label="上一张">‹</button>
  <button aria-label="下一张">›</button>

  <!-- 指示点必须可键盘操作 -->
  <div class="dots">
    <button aria-label="第1张图片" aria-selected="true">1</button>
    <button aria-label="第2张图片">2</button>
  </div>
</div>

4. 完全无障碍的模态框(Esc 关闭 + 焦点管理)

<!-- 触发按钮 -->
<button aria-haspopup="dialog" aria-controls="modal1">打开登录窗口</button>

<!-- 模态框 -->
<div id="modal1" role="dialog" aria-labelledby="modal-title" aria-modal="true" hidden>
  <div class="modal-content">
    <h2 id="modal-title">用户登录</h2>
    <button aria-label="关闭窗口" class="close">×</button>
    
    <form>
      <label for="user">用户名</label>
      <input id="user" type="text" required>

      <label for="pass">密码</label>
      <input id="pass" type="password" required>

      <button type="submit">登录</button>
    </form>
  </div>
</div>

<!-- 遮罩层(可点击关闭) -->
<div class="overlay" hidden></div>

// 简单的焦点管理(必须加!)

document.getElementById('openModal').addEventListener('click', () => {

  document.getElementById('modal1').removeAttribute('hidden');

  document.querySelector('.overlay').removeAttribute('hidden');

  document.querySelector('#user').focus(); // 自动聚焦第一个输入框

});


document.addEventListener('keydown', e => {

  if (e.key === 'Escape' && !document.getElementById('modal1').hasAttribute('hidden')) {

    closeModal();

  }

});

5. 表单 + 错误提示(中国网站最常挂)

<form novalidate>
  <div class="field">
    <label for="phone">手机号码 <span aria-label="必填">*</span></label>
    <input type="tel" id="phone" required aria-describedby="phone-error">
    <p id="phone-error" class="error" role="alert" hidden>请输入11位中国大陆手机号码</p>
  </div>

  <div class="field">
    <label>
      <input type="checkbox" id="agree" required>
      我已阅读并同意<span class="sr-only">《用户协议》</span>
    </label>
    <a href="/agreement" target="_blank">《用户协议》</a>
  </div>

  <!-- 验证码(必须提供语音或文字备选) -->
  <label for="captcha">验证码</label>
  <img src="captcha.jpg" alt="验证码图片,显示文字 AB12">
  <button type="button">看不清?换一张</button>
  <button type="button" aria-label="语音播报验证码">🔊 听验证码</button>
  <input id="captcha" required>
</form>

6. 对比度达标 + 焦点样式(CSS 必加)

/* 跳过链接样式 */
.skip-link {
  position: absolute;
  top: -40px;
  left: 6px;
  background: #000;
  color: #fff;
  padding: 8px;
  z-index: 100;
}
.skip-link:focus {
  top: 6px;
}

/* 焦点样式(不能去掉 outline,除非自己写更好的) */
button:focus-visible,
a:focus-visible,
input:focus-visible {
  outline: 3px solid #005fcc;
  outline-offset: 2px;
}

/* 屏幕阅读器专用文字(视觉隐藏但可读) */
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

7. 视频带字幕 + 音频描述按钮

<video controls poster="thumb.jpg">
  <source src="welcome.mp4" type="video/mp4">
  <track kind="captions" src="welcome.zh.vtt" srclang="zh" label="简体中文字幕" default>
  <track kind="descriptions" src="welcome-description.vtt" srclang="zh" label="音频描述">
</video>

把上面这些代码直接扔给前端开发,基本可以一次通过:

  • 国家信息无障碍公共服务平台检测

  • 工信部网站无障碍评测

  • 残联、网信办、招投标的无障碍审查


关键词:
未查询到任何数据!

发表评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。
验证码