W3Schools.com y estoy bastante seguro de que recuerdo haber visto el estado de W3C.org que <menu>
debería usarse para los menús de la barra de herramientas y enumerar los comandos de control de formularios.
Entonces, ¿cuál debo usar para mi menú principal? Nav
, o Menu
? ¿Importa?
Respuestas:
nav
se utiliza para grupos de enlaces internos (a
elementos). Generalmente, esto significa que los enlaces deben viajar a páginas separadas o cambiar el contenido en el caso de una página AJAX. Espere algún tipo de cambio de contenido al hacer clic en unnav
elemento.menu
se utiliza para grupos de controles (a
,input
,button
). Generalmente, esto significa que las entradas deben realizar una función dentro de la página. Espere algún tipo de interacción javascript al hacer clic en unmenu
elemento.nav
: la navegación del sitio.menu
: el menú de una aplicación web.fuente
<li>
elementos directamente debajo de una<menu>
etiqueta, sin la necesidad de una<ul>
lista. El requisito es que se omita el atributo<menu>
'type
o se establezca en"toolbar"
. Consulte la especificación del<li>
elemento y el<menu>
elemento .<menu>
una de las especificaciones HTML5 de W3C? Lo encuentro en la versión WHAT WG , pero no en el último borrador de W3C HTML 5.3 .Aquí hay una publicación de HTML5Doctor
nav
con una sección sobre en qué se diferencia demenu
(básicamente, úsela en aplicaciones reales). Parece que quieresnav
.fuente
Con el
<menu>
se usa generalmente para menús contextuales.MDN tiene buena documentación al respecto: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu
fuente
El mejor lugar para obtener esta respuesta son los estándares HTML 5.
El menú está definido en HTML 5.1 2nd Edition .
Nav se define en HTML 5 .
Hay notas para la navegación que no incluí, pero creo que son importantes, pero creo que es mejor que obtenga la definición usted mismo de los estándares.
Las definiciones marcadas en esta publicación como la respuesta están cerca de ser correctas, pero tienen declaraciones extrañas que hacen que la respuesta sea incorrecta.
fuente
<nav>
es una sección (como<section>
o<article>
) por lo que aparecerá en el esquema de su documento HTML. Debido a esto, usaría el<menu>
99% del tiempo. Para mí,<nav>
es una mezcla entre<section>
y<menu>
, con la restricción adicional que<nav>
debería usarse específicamente para la navegación, mientras que<menu>
puede ser para cualquier cosa que pueda llamarse menú (incluida una barra de navegación). Por tanto, la mayoría de las barras de navegación, a pesar de que son barras de navegación, no cumplen los estrictos requisitos de<nav>
, y<menu>
son más apropiadas.Nunca en mi carrera de desarrollo web encontré una situación en la que quisiera que mi barra de navegación fuera parte del esquema del documento.
fuente
<menu>
de un sitio web que no es una aplicación web - 99% de las veces, el 'menú' de navegación será enlaces estáticos a otras páginas u otras secciones de la página, que es lo que<nav>
es para, de acuerdo a la especificación.nav
no es una buena opción de etiqueta porquenav
es un elemento de sección, por lo que se convertirá en parte del esquema del documento como si fuera una sección con un encabezado y contenido. De hecho, este es un escenario poco común en el que deseanav
que actúe como una sección.menu
fue solo una sugerencia como reemplazo semántico. No veo nada en la especificación que diga que no se puede usar de esta manera. Parece encajar. Pero si por alguna razón cree que el menú es solo para lo que define como una aplicación web, lo recomiendool
oul
como un reemplazo.<menu>
todavía tiene un soporte deficiente en este momento. (¿Es realmente cierto que Chrome no tiene soporte para él?) Además, puede lograr exactamente la misma semántica proporcionando elrole="menu"
atributo a otro elemento (por ejemplo, un div o nav). El atributo de rol anula la semántica predeterminada de cualquier elemento.