我对角色有点困惑。如果我的页面中包含nav
元素中包含的导航,并指定role="navigation"
。
<nav role="navigation">
...
</nav>
nav
部分导航是不是已经在语义上明确了?
或者,如果我的页面上有其他导航部分,并且只为其中一个指定了角色,那么此部分在页面上是最重要的部分吗?那些没有role="navigation"
的人只是无聊的导航?
答案 0 :(得分:29)
大多数现代浏览器/技术确实将HTML5 <nav>
元素识别为导航并给予相同的关注。但明确设置role="navigation"
属性只会确保更多技术可以提取它。
例如,屏幕阅读器和其他残障用户的技术很少完全符合标准(特别是如果他们必须一直工作到IE6或更低版本!)所以明确添加角色属性总是确保你覆盖所有为大多数用户提供的基础。
另外(这只是猜测)一些鲜为人知的搜索引擎可能还没有完全识别HTML5,因此添加这些角色应该有助于网站抓取能力。
答案 1 :(得分:15)
从W3C看看at this。它说:
在设置ARIA角色和/或aria- *属性的多数案例中 与默认的隐式ARIA语义匹配的是不必要的和 不推荐,因为浏览器已经设置了这些属性。
这样做<main role="main">
是不必要的,不推荐。也就是说,Bootstrap's navbar examples(包括me-copy-paste在内的所有人)都带有<nav role="navigation">
。
说实话,我不确定什么是正确的。
答案 2 :(得分:4)
W3C建议:&#34;但是,为了使支持ARIA的用户代理更容易访问该结构,并确保不支持HTML5的用户代理也能理解该结构,请添加ARIA角色=&#34;导航&#34;建议。&#34; https://www.w3.org/WAI/GL/wiki/Using_HTML5_nav_element
答案 3 :(得分:0)
使用 <nav>
元素将自动传达一个部分具有 navigation
的角色。与 ARIA 相比,开发人员应该始终更喜欢使用正确语义的 HTML 元素。