跳过链接
另见: skip to content, skip nav
位于每个页面最顶部的键盘快捷方式,允许用户跳过重复的导航栏直接进入主要内容。WCAG 2.4.1"绕过区块"的合规要求。
跳过链接是位于每个页面最顶部的键盘快捷方式,允许用户跳过重复的导航区域,直接进入主要内容。它满足 WCAG 2.4.1 绕过区块(A 级)的要求,是实现无障碍访问成本最低的手段之一。
存在的意义
以典型的内容网站为例:页眉包含六个顶级导航链接、一个语言切换器和一个主题切换按钮,页脚还有十二个链接。每个页面都会重复这些结构。键盘用户或屏幕阅读器用户打开一篇文章时,必须依次按 Tab 键经过约三十个可交互元素,才能到达文章正文。每次页面跳转都要重复这一过程,极为耗时。
跳过链接是一个 <a href="#main-content">跳至内容</a> 元素,作为文档中第一个可聚焦元素放置在页面顶部。用户在页面加载后按一次 Tab 键,看到”跳至内容”提示,按 Enter 键后焦点即跳转至文章正文。
实现方法
该模式代码量极小,但有几个常见陷阱需要注意:
<a class="skip-link" href="#main-content">Skip to content</a>
...
<main id="main-content" tabindex="-1">
...
</main>
.skip-link {
position: absolute;
left: -9999px;
top: 0;
background: #000;
color: #fff;
padding: 0.5rem 1rem;
z-index: 100;
}
.skip-link:focus {
left: 0;
}
以下三个细节至关重要:
-
链接在获得焦点时必须可见。 若跳过链接始终设为
display: none,视觉型键盘用户将无法感知其存在。应通过定位将其移至屏幕外,而非使用display: none或visibility: hidden隐藏。 -
目标元素必须能接受焦点。 裸
<main>元素默认不接受键盘焦点。添加tabindex="-1"可使其支持程序化聚焦,确保浏览器在链接激活时真正移动焦点。否则,URL 哈希值虽然改变,焦点却不会移动,下一次按 Tab 键仍会从页面顶部重新开始,跳过链接的意义将完全丧失。 -
必须是第一个可聚焦元素。 不是”在前 100 个元素中”,而是第一个。若在其前方存在其他元素(如 Logo 链接、搜索图标),用户需要先 Tab 经过这些元素才能到达跳过链接,从而失去意义。
多个跳过链接
包含多个重复区域的长页面,有时可以提供一个小型”跳过”菜单代替单一链接:
- 跳至主要内容
- 跳至导航
- 跳至页脚
提供三至四个目标的简短聚焦可见列表是合理的,但不宜在每个页面顶部放置自动生成的冗长目录。
不能替代的内容
跳过链接是绕过区块的安全网,但不能替代以下内容:正确的地标元素(<nav>、<main>、<aside>、<footer>)、正确的标题层级结构(每页一个 <h1>,层级清晰的 <h2>),以及在重复地标上添加 ARIA aria-label。屏幕阅读器用户通过键盘快捷键在区域和标题之间导航,这依赖于上述结构的存在;跳过链接面向的是视觉型纯键盘用户。