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

<;导航>;或<;菜单>;(HTML5),html,menu,standards,nav,Html,Menu,Standards,Nav,我很确定我记得看到W3C.org声明,应该用于工具栏菜单和表单控制命令列表 那么,我的主菜单应该用哪一个呢导航,或菜单?这有关系吗?这里有一个章节,介绍它与菜单的区别(基本上,在实际应用中使用它)。看起来您希望navnav用于内部链接组(a元素)。一般来说,这意味着链接应该移动到单独的页面,或者在AJAX页面中更改内容。单击nav项目时,可能会出现某种内容更改 菜单用于控件组(a,输入,按钮)。通常这意味着输入应该在页面中执行一个功能。当点击菜单项时,需要一些javascript交互 nav:站

我很确定我记得看到W3C.org声明,
应该用于工具栏菜单和表单控制命令列表


那么,我的主菜单应该用哪一个呢<代码>导航,或
菜单
?这有关系吗?

这里有一个章节,介绍它与
菜单的区别(基本上,在实际应用中使用它)。看起来您希望
nav

nav
用于内部链接组(
a
元素)。一般来说,这意味着链接应该移动到单独的页面,或者在AJAX页面中更改内容。单击
nav
项目时,可能会出现某种内容更改

菜单
用于控件组(
a
输入
按钮
)。通常这意味着输入应该在页面中执行一个功能。当点击
菜单
项时,需要一些javascript交互

nav
:站点的导航

菜单
:web应用程序的菜单

一起,通常用于上下文菜单

MDN有很好的文档说明:

是一个部分(如
),因此它将出现在HTML文档大纲中。因此,99%的时间我都会使用
。对我来说,
的混合体,增加了一个限制,即
应该专门用于导航,而
可以用于任何可能被称为菜单的东西(包括导航栏)。因此,尽管大多数导航栏都是导航栏,但它们并不符合
的严格要求,
更合适


在我的web开发生涯中,我从未发现过一种情况,我希望我的导航栏成为文档大纲的一部分。

获得这个答案的最佳地方是HTML 5标准本身。

菜单在中定义

它“…表示一组命令。”


导航在中定义

它是,“…页面中链接到其他页面或其中部分的部分 页面:包含导航链接的部分。“

有一些关于nav的注释我没有包括,但我认为它们很重要,但我认为最好是你自己从标准中得到定义


这篇文章中标记为答案的定义几乎正确,但其中有一些无关的语句,使答案本身是错误的。

您可能需要阅读。什么是“表单控制命令”?这是错误的。你应该很少(如果有)在非web应用程序的网站上使用
——99%的时候,你的导航“菜单”将是指向其他页面或页面上其他部分的静态链接,这就是
的用途,根据规范。@IvanDurst,我的观点是,如果你只是构建一个静态链接列表,
nav
不是一个好的标记选择,因为
nav
是一个节元素,因此它将成为文档大纲的一部分,就像它是一个带有标题和内容的节一样。这实际上是一种罕见的情况,您希望您的
nav
像一个区段一样工作<代码>菜单
只是一个语义替换的建议。我在说明书中没有看到任何东西说它不能以这种方式使用。看起来很合适。但是,如果您出于某种原因认为菜单仅适用于您定义的web应用程序,那么我建议使用
ol
ul
作为替代。根据兼容性表,
目前仍然缺乏支持。(Chrome确实不支持它吗???)此外,您还可以通过向另一个元素(例如div或nav)提供
role=“menu”
属性来实现完全相同的语义。角色属性覆盖任何元素的默认语义。有趣的事实是:规范允许将
  • 元素直接嵌套在
    标记下,而不需要
    列表。要求省略
    类型
    属性或将其设置为
    “工具栏”
    。请参阅和的规范。有人能告诉我W3C HTML5规范中的
    吗?我在图书馆里找到了,但在图书馆里找不到。