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章的导航和/或导航在边栏中的辅助内容等

这种差异在navigationangular色的定义中表示

用于导航文档或相关文档的导航元素(通常是链接)的集合。

nav元素 (由我粗体):

nav元素表示链接到其他页面或页面内的部分的页面部分:包含导航链接的部分。


另请注意:不支持/了解WAI-ARIA的HTML5用户代理不会理解示例2包含导航(反之亦然)。

Twitter Bootstrap使用<nav role="navigation">

这似乎是最有效地覆盖所有需求。

一定要添加一个angular色=“导航”到每个导航栏来帮助访问。

这也是w3.org的build议

前两种情况在语义上是等价的。 第三不是。 <ul>具有默认的ARIA语义 list ,并且只能有效地设置为directorylistlistboxmenumenubartablisttablisttoolbartree ,因此将其设置为navigation是无效的,并且打破list语义<ul>元素在前两种情况下具有。

<nav role="navigation">在W3Cvalidation服务上使用HTML5 dtd进行validation。

对我来说,这似乎是一个不错的select,因为它支持新旧两种,直到辅助技术迎头赶上。

好的,这是一个很好的问题,简而言之,当两个或更多的提出类似问题的规格在不同的时间发布,并被不同的浏览器/屏幕阅读器支持时,会发生什么情况。

<nav>元素应该自动被赋予navigationangular色,所以理论上你可以使用你的选项1.但是,一些屏幕阅读器还不知道,所以使用2会更好。 选项3似乎很奇怪,因为它不仅仅是一个无序列表,而是一个导航。

当然,这是一个很好的例子 – 对许多ARIAangular色来说,没有一个HTML元素可以匹配,所以你可能会select2,因为你正在使用ARIA的其他东西,并且希望是明确的。

就个人而言,我使用2,因为GZIP使文件大小无关紧要,它使它工作在我testing与(配音和Windows上的其他东西,我现在不记得了)。

WAVE无障碍网页工具可以用来获取这方面的信息。

虽然我在那里find文档和结果查看时有点混乱。 我认为这将是很好的清晰的例子,因为不是每个人都非常了解networking上的可访问性。 (结果视图看起来非常好,但仍然有例子会有帮助。)