我对角色有点困惑。如果在我的页面中,我有一个包含在nav
元素中的导航,并指定了role="navigation"
。
<nav role="navigation">
...
</nav>
nav
元素本身不已具有语义明确的导航含义吗?
即使页面上还有其他导航部分,如果我仅为其中一个指定了角色,那么这个部分就成为页面上最重要的部分了吗?而没有role="navigation"
的其他导航就变得无聊了吗?
我对角色有点困惑。如果在我的页面中,我有一个包含在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">
。
老实说,我不确定哪个是正确的。
<nav class="navbar navbar-default">
- 另外,W3C验证器也发出警告:'警告:元素nav不需要role属性。' - maxschlepzig
nav
),更不用说ARIA了。 - Jukka K. Korpela