39

I'm a little confused with roles. If I have in my page a navigation that is enclosed in a nav element and specify a role="navigation".

<nav role="navigation">
    ...
</nav>

Isn't it already semantically explicit that the nav section is navigation?

Or if I have some other navigation sections on my page, and specify role for only one of them, this section becomes the most important on a page? And those without role="navigation" just boring navigations?

4

4 回答 4

35

确实,大多数现代浏览器/技术都将 HTML5<nav>元素识别为导航并给予同样的关注。但是明确设置role="navigation"属性只是确保更多的技术可以接受它。

例如,针对残障用户的屏幕阅读器和其他技术很少完全符合标准(特别是如果他们必须一直工作到 IE6 或更低版本!)因此明确添加角色属性始终确保您涵盖所有基础尽可能多的用户。

此外(这只是一个猜测)一些鲜为人知的搜索引擎可能还不能完全识别 HTML5,因此添加这些角色应该有助于网站的抓取能力。

于 2013-02-16T14:03:19.183 回答
21

从 W3C看一下这个。它说:

大多数情况下,设置与默认隐式 ARIA 语义匹配的 ARIA 角色和/或 aria-* 属性是不必要的,也不推荐,因为这些属性已经由浏览器设置。

这样做<main role="main">不必要的,不推荐。也就是说,Bootstrap 的导航栏示例(每个人 - 包括我 - 复制粘贴)都附带<nav role="navigation">.

老实说,我不确定什么是正确的。

于 2014-09-24T10:50:26.113 回答
5

W3C 建议:“但是,为了使支持 ARIA 的用户代理更容易访问该结构,并确保不支持 HTML5 的用户代理也可以理解该结构,建议添加 ARIA 角色="navigation"。 " https://www.w3.org/WAI/GL/wiki/Using_HTML5_nav_element

于 2016-08-11T08:53:52.110 回答
2

使用该<nav>元素将自动传达一个部分具有的角色navigation。开发人员应该总是更喜欢使用正确的语义 HTML 元素而不是 ARIA。

来源:MDN 关于 ARIA 的文章:导航角色

于 2021-05-12T12:16:08.333 回答