如果您考虑“ div ”,它是一个不包含任何内容的块元素,它是空白的,是一个准备装满各种 html-#X 代码好东西的空框。
“ Nav ”元素大致相同,但是它被保留为用于处理一组特定的 html5 代码的块!因此它保留用于导航链接(在实践中可以打破的规则)。不过,可以这么说,您可以在任一标签中执行相同的操作,它的 CSS 属性和类在大多数情况下控制和操作这两个框。
(在实践中可以打破的规则)
您甚至可以在整个网页中用导航替换所有 div,如果浏览器支持导航,它将呈现相同的内容。但这只会混淆编码器、您和其他人。
虽然我不确定是否有任何特定的指令来规范、限制或压制 div 上的导航,但它们在所有方面似乎都是相同的标签,一个空盒子容器。
nav和div都支持Global和Event 属性,因此没有区别。但!由于 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 的问题和目的时,这可以提供更多关于差异的见解。