<导航> 或 <菜单> (HTML5)

Posted

技术标签:

【中文标题】<导航> 或 <菜单> (HTML5)【英文标题】:<nav> or <menu> (HTML5) 【发布时间】:2011-06-25 13:59:53 【问题描述】:

W3Schools.com,我很确定我记得看到 W3C.org 声明 &lt;menu&gt; 应该用于工具栏菜单和列出表单控制命令。

那么,我应该为我的主菜单使用哪一个? Nav,还是Menu?有关系吗?

【问题讨论】:

您可能想阅读w3fools。 什么是“表单控制命令”? 【参考方案1】:

nav 用于内部链接组(a 元素)。一般来说,这意味着链接应该转到单独的页面,或者在 AJAX 页面的情况下更改内容。单击nav 项目时,预计会发生某种内容变化。

menu 用于控件组(ainputbutton)。通常这意味着输入应该在页面内执行功能。当点击 menu 项目时,预计会有某种 javascript 交互。

nav:网站的导航

menu:Web 应用程序的菜单

【讨论】:

有趣的事实:规范允许将&lt;li&gt; 元素直接嵌套在&lt;menu&gt; 标签下,而不需要&lt;ul&gt; 列表。要求是&lt;menu&gt;type 属性被省略或设置为"toolbar"。请参阅 the &lt;li&gt; element 和 the &lt;menu&gt; element 的规范。 有人可以指出我在 W3C html5 规范之一中的&lt;menu&gt; 吗?我在WHAT WG version 中找到它,但在latest W3C HTML 5.3 draft 中找不到。【参考方案2】:

这是一个HTML5Doctor post on nav,其中有一节介绍了它与menu 的不同之处(基本上,在实际应用中使用它)。看起来你想要nav

【讨论】:

【参考方案3】:

&lt;menu&gt; 通常用于上下文菜单。

MDN 有很好的文档:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu

【讨论】:

【参考方案4】:

获得此答案的最佳位置是他们自己的 HTML 5 标准。 菜单在HTML 5.1 2nd Edition中定义。

它,“...代表一组命令。”

Nav 在HTML 5 中定义。

它是,“......一个页面的一部分,链接到其他页面或其中的部分 页面:带有导航链接的部分。”

有一些我没有包括但认为很重要的导航注释,但我认为最好让您自己从标准中获得定义。

本文中标记为答案的定义接近正确,但其中包含使答案本身错误的无关陈述。

【讨论】:

【参考方案5】:

&lt;nav&gt; 是一个部分(如 &lt;section&gt;&lt;article&gt;),因此它将出现在您的 HTML 文档大纲中。因此,我会在 99% 的时间使用&lt;menu&gt;。对我来说,&lt;nav&gt;&lt;section&gt;&lt;menu&gt; 的混合体,另外还有一个限制是&lt;nav&gt; 应该专门用于导航,而&lt;menu&gt; 可以用于任何可能被称为菜单的东西(包括导航栏)。所以大部分导航栏,虽然是导航栏,但并不符合&lt;nav&gt;的严格要求,&lt;menu&gt;更合适。

在我的 Web 开发职业生涯中,我从未发现我希望导航栏成为文档大纲的一部分。

【讨论】:

这是不正确的。您应该很少(如果有的话)在非网络应用程序的网站上使用&lt;menu&gt; - 99% 的时间,您的导航“菜单”将是指向其他页面或其他部分的静态链接根据规范,该页面是 &lt;nav&gt; 的用途。 @IvanDurst,我的意思是,如果您只是构建静态链接列表,nav 不是一个好的标签选择,因为nav 是一个部分元素,因此它将成为文档大纲,就好像它是一个带有标题和内容的部分。这实际上是一种罕见的情况,您希望您的 nav 像一个部分一样工作。 menu 只是作为语义替换的建议。我在规范中没有看到任何内容说它不能以这种方式使用。似乎很合适。但是,如果您出于某种原因认为该菜单仅适用于您定义为 Web 应用的内容,那么我建议您使用 olul 作为替代。 根据兼容性表here,此时&lt;menu&gt;仍然支持不佳。 (Chrome 真的不支持它吗??)此外,您可以通过向另一个元素(例如 div 或 nav)提供 role="menu" 属性来实现完全相同的语义。 role 属性覆盖任何元素的默认语义。

以上是关于<导航> 或 <菜单> (HTML5)的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript 不显示导航菜单

导航条菜单

php:多个页面调用同一个导航

导航栏引导菜单未在移动设备中显示

导航菜单到汉堡菜单

导航菜单