28

在最新的 Bootstrap 3 导航栏的示例中,我在网络上找到了外部导航栏标记的各种示例

<div class="navbar navbar-default navbar-static-top">...</div>

和其他例子正在使用

<nav class="navbar navbar-default" role="navigation">...</nav>

所有示例都运行良好,并且文档要求 NAV。这让我想知道网络上的很多示例是否是版本 2 的剩余部分,没有为版本 3 重写,或者可以使用任何一个周围的标记。

例子

4

4 回答 4

22

<nav>是主要导航元素的语义 HTML5 容器元素。

nav 是一个块级元素,用于表示页面上主要导航链接的一部分。并非所有链接都应包含在 nav 元素中。导航应该保留给主要导航部分,包括通用导航、目录、面包屑、上一个/下一个链接或其他值得注意的链接组。

来自http://learn.shayhowe.com/html-css/elements-semantics

如果您使用的是 HTML5,那么您应该使用导航。

于 2013-09-05T15:32:30.310 回答
19

如果您考虑“ div ”,它是一个不包含任何内容的块元素,它是空白的,是一个准备装满各种 html-#X 代码好东西的空

Nav ”元素大致相同,但是它被保留为用于处理一组特定的 html5 代码的块!因此它保留用于导航链接(在实践中可以打破的规则)。不过,可以这么说,您可以在任一标签中执行相同的操作,它的 CSS 属性和类在大多数情况下控制和操作这两个框。

(在实践中可以打破的规则) 您甚至可以在整个网页中用导航替换所有 div,如果浏览器支持导航,它将呈现相同的内容。但这只会混淆编码器、您和其他人。

虽然我不确定是否有任何特定的指令来规范、限制或压制 div 上的导航,但它们在所有方面似乎都是相同的标签,一个空盒子容器。

navdiv都支持GlobalEvent 属性,因此没有区别。但!由于 nav 和 div 都是一个全局框(一个容器),作为一个疯狂的科学家编码器,你有很多潜在的可能性。

对不起,参考文献薄弱,但(W3学校

以更通俗的方式提供了对差异的很好的洞察力。

简而言之:nav(html5)是作为div的补充双胞胎诞生的,目的是简化视觉标签编码并使其对开发人员更具识别性、可读性和可理解性。顺便说一句:div 不会作为 html5 中的标签而贬值/ 永远不会是 IMO。跨度是另一个!

创建导航容器/框的旧方法是 -

<div id="navigate"><a href="whatever">link</a></div>
or
<div id="navigate" class="nav"><a href="whatever">link</a></div>

属性、css 和类完成了所有工作。

但在 html 5 的奇妙世界中,div 标签催生了克隆nav标签。

<nav> <a href="Home" class="xxx">my anchor/button/list of links with sprinkles</a></nav>

nav标签提供了更具体的指示(标识)它用于“导航”的内容。这只是非语义(div)语义(nav)元素的问题;以及抄袭w3学校的解释....

语义元素清楚地向浏览器和开发人员描述了它的含义。

nav在代码中清楚地描述了它是一个块标签/容器,用于保存带有 ul-li、a/href、按钮的导航链接(内容)...... Nav 不会获取或发布任何内容,因为它只是一个空框容器,直到您将代码和链接放入其中。即使这样 nav 什么也没做,它的链接做的工作。与导航标签关联的属性对标签进行操作,例如在其位置“隐藏或显示”它。

Div (divide) 是“非语义的”,因为除了在页面主体内划分区域外,它并没有(太多)在语义上描述它的具体用途或作用。

Nav(导航)确实将自己描述为仅用于导航,因此它被视为语义

最后,在关系方面,html5 正在成为新标准,但它不是(在 2016-17 年最初发布的时候?)所有较新的浏览器都支持它,因为它尚未最终确定为正式版本. IE 尚未将它包含在他们的新版本中(我相信 10 个)。但它来了!

但是由于 nav> 是较新的 html 5(仅在某种程度上支持),我们仍然必须依靠 div 标签来包围/包裹

<nav>...</nav>

标签,它有点重要。因此我们仍然必须使用

<div> <nav> links 1</nav> </div>

旧浏览器的未来之路,因为 nav 标签无法识别并将被旧浏览器忽略,否则内容可能只是浮动或推到边距框之外或有其他不良副作用。而在支持导航的较新浏览器中将是安全的。同时拥有 div 和 nav 不会损害外观或将外观改变到任何明显的程度。

简而言之,很明显,我们不能排除早期版本的浏览器支持较低版本的 html(3.x 和 4.1)以支持 HTML5,我们必须考虑所有浏览器并向后兼容。

由于windows xp等老操作系统,有很多用户无法使用支持html5的新浏览器。所以请记住,仍有许多用户被迫运行 IE 6、7、8 垃圾,这些垃圾无法识别或呈现新的 html5 导航和其他标签。也就是说,如果您想覆盖所有潜在受众。

我希望当我了解 div 和 nav 的问题和目的时,这可以提供更多关于差异的见解。

于 2016-10-27T07:06:59.077 回答
1

div 和 nav 标签之间的浏览器绝对没有区别。唯一的区别在于 HTML 的人类读者。使用包含导航元素的 nav 标签与使用 div 标签包含导航元素并添加 HTML 注释以告知 HTML 的人类读者该 div 标签仅包含导航元素是相同的。

于 2021-02-27T18:42:25.760 回答
0

和 之间没有区别。DIV 是原始 HTML 标记,而 NAV 是作为新 HTML5 语义标记的一部分引入的。它们的行为完全相同。支持所有全局属性和事件[w3 link]。唯一的主要目的是,它为 HTML 引入了语义,即标签本身说明了它应该包含的内容,而不是没有任何意义的 DIV。

另一个目的是 Affordance 的概念,即一个对象仅通过其属性告诉您用于什么或应该如何使用它。例如,你自动知道如何使用茶壶(它有一个把手和一个壶嘴),没有人需要教你。语义提供了可供性。您可以将语义视为与可供性相同(可供性可以说是视觉,语义可以说是编码)。更多关于这个优秀的 youtube 链接

此标签的第三个原因是为视障人士提供辅助功能。它是WAI-ARIA功能集的一部分,旨在改善导航功能,包括视觉障碍或其他障碍人士。因此,假设用户通过屏幕阅读器或其他方式与应用程序交互,该应用程序使用这些 HTML5 语义标签(、、等)并可以发音。HTML5 允许语义的其他方式是通过分配 role="" 属性为 div 或 HTML 元素提供语义。

于 2020-01-15T22:40:17.507 回答