HTML5导航元素与angular色=“导航”
以下所有内容都具有相同的语义? 如果不是,请解释你的答案。
1。
<nav> <ul> <li><a href="#">link</li> <li><a href="#">link</li> <li><a href="#">link</li> <li><a href="#">link</li> </ul> </nav>
2。
<div role="navigation"> <ul> <li><a href="#">link</li> <li><a href="#">link</li> <li><a href="#">link</li> <li><a href="#">link</li> </ul> </div>
3。
<ul role="navigation"> <! -- breaks HTML5 specification 3.2.7.4 Implicit ARIA Semantics navigation is not an allowed value of role on ul --> <li><a href="#">link</li> <li><a href="#">link</li> <li><a href="#">link</li> <li><a href="#">link</li> </ul>
正如Alohci指出的 ,根据HTML5,示例3是不允许的 。
但是例子1和2在语义上并不相同。
nav
是一个切片元素, div
不是。 因此,示例1创build了一个无标题部分(类似于空标题),更改了整个文档大纲 。
此外, nav
总是属于父节点内容(对应于根节点),因此您可以为整个站点提供导航,主内容的导航,仅用于主内容的第3章的导航和/或导航在边栏中的辅助内容等
这种差异在navigation
angular色的定义中表示
用于导航文档或相关文档的导航元素(通常是链接)的集合。
和nav
元素 (由我粗体):
nav
元素表示链接到其他页面或页面内的部分的页面部分:包含导航链接的部分。
另请注意:不支持/了解WAI-ARIA的HTML5用户代理不会理解示例2包含导航(反之亦然)。
Twitter Bootstrap使用<nav role="navigation">
这似乎是最有效地覆盖所有需求。
一定要添加一个angular色=“导航”到每个导航栏来帮助访问。
这也是w3.org的build议
前两种情况在语义上是等价的。 第三不是。 <ul>
具有默认的ARIA语义 list
,并且只能有效地设置为directory
, list
, listbox
, menu
, menubar
, tablist
, tablist
, toolbar
或tree
,因此将其设置为navigation
是无效的,并且打破list
语义<ul>
元素在前两种情况下具有。
<nav role="navigation">
在W3Cvalidation服务上使用HTML5 dtd进行validation。
对我来说,这似乎是一个不错的select,因为它支持新旧两种,直到辅助技术迎头赶上。
好的,这是一个很好的问题,简而言之,当两个或更多的提出类似问题的规格在不同的时间发布,并被不同的浏览器/屏幕阅读器支持时,会发生什么情况。
<nav>
元素应该自动被赋予navigation
angular色,所以理论上你可以使用你的选项1.但是,一些屏幕阅读器还不知道,所以使用2会更好。 选项3似乎很奇怪,因为它不仅仅是一个无序列表,而是一个导航。
当然,这是一个很好的例子 – 对许多ARIAangular色来说,没有一个HTML元素可以匹配,所以你可能会select2,因为你正在使用ARIA的其他东西,并且希望是明确的。
就个人而言,我使用2,因为GZIP使文件大小无关紧要,它使它工作在我testing与(配音和Windows上的其他东西,我现在不记得了)。
WAVE无障碍网页工具可以用来获取这方面的信息。
虽然我在那里find文档和结果查看时有点混乱。 我认为这将是很好的清晰的例子,因为不是每个人都非常了解networking上的可访问性。 (结果视图看起来非常好,但仍然有例子会有帮助。)