← 中文资源

简体中文版本

构建可访问的标签页组件

为标签页实现正确的 ARIA 角色、漫游 tabindex 与方向键导航,让键盘与屏幕阅读器用户可靠地切换面板。

阅读英文原文

概述

标签页看似简单,实则不然。屏幕阅读器需要角色与关系,键盘用户需要漫游焦点与方向键,非活动面板必须被真正隐藏。三者都做好,才能避免只有外观达标的组件。

关键步骤

  1. 列表设置 role=tablist,触发器角色为 tab,面板角色为 tabpanel 并用 aria-labelledby 关联。
  2. 使用漫游 tabindex,使只有当前标签处于 Tab 顺序中。
  3. 处理左右方向键移动焦点、Home/End 跳转,并在激活或聚焦时切换。
  4. 同步 aria-selected,并把非活动面板移出无障碍树。

验证

  • Tab 只进入组件一次,方向键可切换标签。
  • 屏幕阅读器能读出标签名称、角色与选中状态。
  • 非活动面板无法通过键盘到达。
  • Home 与 End 可跳到首尾标签。

注意事项

  • 方向键自动激活对开销较大的面板可能造成困扰,此时手动激活更稳妥。
  • 该模式不涵盖垂直或循环标签页,它们需要额外的按键处理。
<ul role="tablist">
  <li role="tab" aria-selected="true" tabindex="0">Overview</li>
  <li role="tab" aria-selected="false" tabindex="-1">Settings</li>
</ul>
<div role="tabpanel" aria-labelledby="tab-overview">…</div>