我对角色有点困惑。如果我的页面中有一个包含在nav
元素中的导航,并指定一个role="navigation"
。
<nav role="navigation">
...
</nav>
nav
部分是导航,这不是在语义上已经很明确了吗?
或者,如果我的页面上有其他一些导航部分,并且只为其中一个指定了角色,那么这个部分就会成为页面上最重要的部分?那些没有role="navigation"
的只是无聊的导航?
的确,大多数现代浏览器/技术都将HTML5 <nav>
元素识别为导航,并给予它同样的关注。但明确设置role="navigation"
属性只会确保更多的技术能够接受它。
例如,针对残疾用户的屏幕阅读器和其他技术很少完全符合标准(尤其是当它们必须一直工作到IE6或更低版本时!),因此明确添加角色属性总是可以确保为尽可能多的用户覆盖所有基础。
此外(这只是猜测),一些鲜为人知的搜索引擎可能还不能完全识别HTML5,因此添加这些角色应该有助于提高网站的抓取能力。
看看W3C的这篇文章。上面写着:
在大多数的情况下,设置ARIA角色和/或ARIA-*属性与默认的隐式ARIA语义相匹配是不必要的,并且不推荐,因为浏览器已经设置了这些属性。
因此,执行<main role="main">
是不必要的,也不建议执行。也就是说,Bootstrap的导航条示例(包括我在内的所有人都会复制粘贴)随<nav role="navigation">
一起提供。
老实说,我不确定什么是正确的。
W3C建议:"然而,为了让支持ARIA的用户代理更容易访问该结构,并确保不支持HTML5的用户代理也能理解该结构,建议添加ARIA role="navigation"。"https://www.w3.org/WAI/GL/wiki/Using_HTML5_nav_element
使用<nav>
元素将自动传达一个部分具有navigation
的角色。与ARIA相比,开发人员应该始终更喜欢使用正确的语义HTML元素。
来源:MDN关于ARIA的文章:导航角色