导航角色=导航

Art*_*kyi 30 html html5 semantic-markup

我对角色有些困惑.如果我在页面中有一个包含在nav元素中的导航并指定了一个role="navigation".

<nav role="navigation">
    ...
</nav>
Run Code Online (Sandbox Code Playgroud)

是否已经在语义上明确该nav部分是导航?

或者,如果我的页面上有其他导航部分,并且只为其中一个指定了角色,则此部分在页面上变得最重要?而那些没有role="navigation"无聊导航的人呢?

Mik*_*ons 30

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

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

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

  • 确实没有"证据",因为搜索引擎方法的细节是如此秘密,但标记可用于帮助识别页面结构.我讨厌假设,但是对于搜索引擎技术,他们有时候是一个必要的恶魔 - 所以我认为他们将使用他们掌握的所有工具来展示最好的结果,我们也应该尽我们所能来帮助他们做到这一点. (6认同)
  • 我认为没有任何证据表明任何搜索引擎"识别HTML5"(如"nav"),甚至更少的ARIA. (2认同)

Alb*_*lvo 17

从W3C 看看这个.它说:

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

这样做<main role="main">不必要的,不推荐.也就是说,Bootstrap的导航栏示例(包括me-copy-paste在内的所有人)都附带了<nav role="navigation">.

说实话,我不确定什么是正确的.

  • 不再是,似乎 - 示例当前显示为`<nav class ="navbar navbar-default">` - 顺便说一下,[w3c验证器也警告过这个](https://validator.w3.org/nu/): '警告:元素导航不需要角色属性. (4认同)
  • [Bootstrap v4 alpha 6](https://v4-alpha.getbootstrap.com/components/navbar/):_“通过使用&lt;nav&gt;元素,或使用更通用的元素(例如&lt;div&gt;),确保可访问性,向每个导航栏添加一个role =“ navigation”,以将其明确标识为辅助技术用户的地标性区域。“ _ (2认同)

小智 5

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