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

时间:2013-09-05 05:01:58

标签: html twitter-bootstrap-3

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

的各种示例
<div class="navbar navbar-default navbar-static-top">...</div>

和其他示例正在使用

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

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

Example

4 个答案:

答案 0 :(得分:17)

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

  

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

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

如果您使用的是HTML5,则应使用导航。

答案 1 :(得分:5)

如果你考虑&#34; div &#34;,它是一个块元素,什么都不包含,它是空白的,一个空盒子准备好了充满了各种各样的html- #X 代码商品。

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

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

虽然我不确定是否有任何特定指令可以对div进行管理,限制或压缩导航,但它们似乎在所有透视图中都是相同的标记,即空盒容器。

导航 div 支持全局事件属性,因此没有任何差异。但!由于nav和div都是一个全局框(一个容器),你作为一个疯狂的科学家编码器有很多潜在的可能性。

对于弱引用感到抱歉,但是(W3 Schools

对更多门外汉的差异提供了很好的洞察力。

简而言之: nav(html5)作为 twin div 的补充而产生,以便简化视觉标记编码并使其更多可识别,可读和可理解的开发人员。 BTW: div不作为html5中的标签折旧 /,永远不会是IMO。 span 是另一个!

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

<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 标记提供更具体的指示(标识),用于&#34; 导航&#34;。这只是元素的问题非语义(div)语义(nav);并且复制和抄袭w3学校的解释....

  

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

nav 在代码中清楚地描述了它是一个块标记/容器,用于保存带有ul-li,a / href的导航链接(内容),纽扣... 导航无法获取或发布任何内容,因为它只是一个空盒容器,直到您将代码和链接放入其中。即使那时导航也什么都不做,它的链接就可以完成工作。与nav标签关联的属性对标签进行操作,例如..&#34;隐藏或显示&#34;它,在它的位置。

Div(除)是&#34;非语义&#34; ,因为它没有(太多)在语义上描述它是专门用于或做的,除了划分体内的区域这页纸。

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

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

但是因为导航&gt;是更新的HTML 5(只有一些支持),我们仍然需要依靠div标签来包围/包装

<nav>...</nav>

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

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

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

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

另一个目的是Affordance的概念,即一个对象仅通过其属性告诉您使用的目的或应如何使用。例如,您会自动知道如何使用茶壶(它带有手柄和壶嘴),而无需教您任何知识。语义提供能力。您可以认为语义与能力相同(能力是视觉的,语义是编码的)。 More on this excellent youtube link

此标签的第三个原因是为视障人士提供了辅助功能。它是WAI-ARIA功能集的一部分,这些功能旨在改善通俗度,包括为视力障碍者或其他残障人士。因此,可以说用户通过屏幕阅读器或其他方式与应用程序进行了交互,该应用程序利用了这些HTML5语义标记(,等)并可以发音。 HTML5允许语义的其他方式是通过分配role =“”属性为div或HTML元素提供语义。