在Bootstrap 3导航栏中使用NAV和DIV有什么区别?

use*_*595 23 html twitter-bootstrap-3

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

<div class="navbar navbar-default navbar-static-top">...</div>
Run Code Online (Sandbox Code Playgroud)

和其他例子正在使用

<nav class="navbar navbar-default" role="navigation">...</nav>
Run Code Online (Sandbox Code Playgroud)

所有示例都执行正常,文档调用NAV.这让我想知道网上的很多例子是不是版本3没有重写的版本2剩余,或者可以使用周围的标记.

Ban*_*ord 19

<nav> is the semantic HTML5 container element for you main navigation elements.

The nav is a block level element used to denote a section of major navigational links on a page. Not all links should be wrapped within a nav element. The nav should be reserved for primary navigation sections including universal navigation, a table of contents, breadcrumbs, previous/next links, or other noteworthy groups of links.

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

如果您使用的是HTML5,那么您应该使用nav.

  • 除了告诉浏览器它是链接和东西的主要导航元素之外,它是表现不同还是要与DIV进行比较?我认为OP更多的是了解差异.当然,你指的是差异,但不是行为差异,因为最终用户不会注意到他/她使用DIV或NAV中包含的元素的任何差异,除非另有说明...... (7认同)
  • 你的描述中肯。我想我在@HM1 的问题评论中得到了我的问题的答案:“NAV 是 DIV 元素的 HTML5 标准化,专门用于包围导航栏或元素。” 所以 NAV 和 DIV 是相同的,因为它们代表一个块元素,但 NAV 是专门针对 DIV 的,它告诉浏览器它是用于导航目的。 (3认同)
  • @cram2208 屏幕阅读器从导航栏中获得的信息比另一个 div 多 (2认同)

Bob*_*der 8

如果你考虑" div ",它是一个块元素,什么都不包含,它是空白的,一个空盒子准备填充各种html- #X代码的好东西.

" Nav "元素大致相同,但它被保留为处理特定html5代码集的块!因此它保留用于导航链接(在实践中可以被破坏的规则).不过,你可以在任一标签中做同样的事情,它的CSS属性和在大多数情况下控制和操纵这两个框的类.

(在实践中可以被破坏的规则) 您甚至可以在整个网页中用导航替换所有div,如果浏览器支持导航,它将呈现相同的.但它只会让编码人,你和其他人感到困惑.

虽然我不确定是否有任何特定的指令来调节,限制或压缩导航到div,但它们似乎在所有透视图中都是相同的标记,一个空盒子容器.

这两种导航DIV支持全球事件属性,所以有没有没有区别.但!由于nav和div都是一个全局框(一个容器),你作为一个疯狂的科学家编码器有很多潜在的可能性.

对不起弱的参考,但(W3学校)

提供了一个非常好的洞察力,以更多的外行人的术语.

简而言之:NAV(HTML5)被作为生产经历的一个补充双胞胎的div,以缓解视觉标签编码,使之更容易识别,易于阅读和理解给开发者.BTW:div不作为html5 /中的标签折旧,永远不会是IMO.跨度是另一个!

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

<div id="navigate"><a href="whatever">link</a></div>
or
<div id="navigate" class="nav"><a href="whatever">link</a></div>
Run Code Online (Sandbox Code Playgroud)

并且属性,css和类完成了所有工作.

但是在html 5的精彩世界中,div标签诞生了克隆nav标签.

<nav> <a href="Home" class="xxx">my anchor/button/list of links with sprinkles</a></nav>
Run Code Online (Sandbox Code Playgroud)

导航标签提供的它是干什么用的"更具体的指示(标识)导航 ".它只是元素的非语义(div)语义(nav) ; 以及复制和抄袭w3学校的解释....

语义元素清楚地描述了它对浏览器和开发人员的意义.

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

Div(除)是"非语义"的,因为除了在页面主体内划分区域之外,它没有(太多)在语义上描述它是专门用于或做的.

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

最后和关系中的旁注,html5作为新标准正在流行,但它不是(在原始发布时间2016-17?)所有新浏览器都支持,因为它尚未最终确定为官方发布.IE还没有将它包含在他们的新版本中(我相信10).但它的到来!

但是因为nav>是较新的html 5(仅支持一些),我们仍然需要依靠div标签来包围/封装

<nav>...</nav>
Run Code Online (Sandbox Code Playgroud)

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

<div> <nav> links 1</nav> </div>
Run Code Online (Sandbox Code Playgroud)

旧版浏览器的未来之路是因为导航标记无法识别,旧浏览器会忽略这些标记,否则内容可能只是浮动或推到边框之外或产生其他不良副作用.虽然在较新的浏览器中支持导航将是安全的.同时使用div和nav不会伤害ting或将外观改为任何明显的程度.

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

由于较旧的操作系统(如Windows XP),有许多用户无法使用支持html5的新浏览器.所以请记住,仍有许多用户被迫运行IE 6,7,8垃圾,这些垃圾无法识别或呈现新的html5导航和其他标签.那就是如果你想要覆盖所有潜在的受众.

我希望通过我理解div和nav的问题和目的,这提供了更多的洞察力.