辅助功能地标

为什么

借助地标,使用 屏幕阅读器 的盲人用户能够跳转到网页的各个部分。


什么

在 HTML 中有一些语义元素可用于定义网页的不同部分:

  • <header>
  • <nav>
  • <main>
  • <aside>
  • <section>
  • <footer>

如何 - 来自白宫的例子

白宫的首页正在使用地标。 它由顶部的 <header> 和包含所有主要内容的 <main> 组成 和一个 <footer>,底部有一些 <nav> 元素。

一种可视化地标的方法是使用工具 Accessibility Insights。 其中一个特点是它突出了地标,正如我们在下面的屏幕截图中看到的那样。

来自 whitehouse.gov 的屏幕截图,显示该页面由横幅、主页面、搜索和内容信息地标组成。

自己试试吧。 下载浏览器扩展 Accessibility Insights 并打开地标可视化。 您最喜欢的网站是否使用地标?



角色

等等,它显示了 bannercontentinfo 导航。 这有点令人困惑。 原因是每个地标元素都有对应的作用。 到目前为止,我们还没有讨论过本课程中的角色。 我们将回到这一点,但作为一个简化的解释:

<header> 有一个内置的横幅角色。 这意味着 <header><header role="banner"><div role="banner"> 或多或少是等价的。 在大多数情况下,<header> 就足够了。

<nav>也是如此,它内置了role="navigation"<main> 比较简单,它有 role="main"。 然后我们有 <footer> 及其 role="contentinfo"。 让我们暂时离开角色。

每个地标不止一个

一条经验法则是每页只使用一个 <main>。 当我们使用不止一种地标时,例如本例中的多个 <nav>,我们必须标记它们中的每一个。 这是通过属性 aria-label 完成的。

在白宫的页脚中,我们有三个 <nav>,每个都有一个 aria-label,例如 aria-label="social navigation"。 这意味着屏幕阅读器用户可以直接跳到社交导航。 伸出援助之手。 有人会说,将"navigation"导航一词用作 <nav> 标签的一部分是多余的。 没有对错之分,但是 aria-label="social" 应该没问题。

<aside><section> 标签

自从将地标引入 HTML 以来,开发人员一直感到困惑。 人们发现定义模糊的两个元素是 <aside><section>。 让我们试着澄清一下。最大的区别是一个 <aside> 与主要内容相关,<section>相关。

美国白宫的屏幕截图,其中包含新闻通讯的注册表单和用于在社交媒体上分享页面的按钮。

白宫的联系页面同时使用了 <aside><section>。三个共享按钮位于 <aside> 中。 这是有道理的,它们与主要内容相关。 如果您使用它们,您将共享您所在的页面。

Stay Connected<section>。 好的。 它与主要内容无关,其他地标也不合适。白宫可以对这些地标进行的一项改进是添加标签。 这对于屏幕阅读器用户来说会更好。 <section aria-label="Newsletter"><aside aria-label="Share this page"> ; 会有帮助。