W3Schools.com et je suis à peu près sûr que je me souviens avoir vu l'état de W3C.org qui <menu>
devrait être utilisé pour les menus de la barre d'outils et la liste des commandes de contrôle de formulaire.
Alors, lequel dois-je utiliser pour mon menu principal? Nav
, ou Menu
? Est-ce que ça importe?
Réponses:
nav
est utilisé pour les groupes de liens internes (a
éléments). En général, cela signifie que les liens doivent se déplacer vers des pages séparées ou modifier le contenu dans le cas d'une page AJAX. Attendez-vous à une sorte de changement de contenu lorsque vous cliquez sur unnav
élément.menu
est utilisée pour des groupes de commandes (a
,input
,button
). En général, cela signifie que les entrées doivent exécuter une fonction dans la page. Attendez-vous à une sorte d'interaction javascript lorsque vous cliquez sur unmenu
élément.nav
: la navigation pour le site.menu
: le menu d'une application Web.la source
<li>
éléments directement sous une<menu>
balise, sans avoir besoin d'une<ul>
liste. La condition est que l<menu>
'type
attribut s soit omis ou défini sur"toolbar"
. Voir la spécification de l'<li>
élément et de l'<menu>
élément .<menu>
dans l'une des spécifications HTML5 du W3C? Je le trouve dans la version WHAT WG , mais pas dans le dernier brouillon HTML 5.3 du W3C .Voici un article sur HTML5Doctor
nav
avec une section expliquant en quoi il est différent demenu
(essentiellement, utilisez-le dans des applications réelles). On dirait que tu veuxnav
.la source
Avec le,
<menu>
il est généralement utilisé pour les menus contextuels.MDN a une bonne documentation à ce sujet: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu
la source
Le meilleur endroit pour obtenir cette réponse est les standards HTML 5 eux-mêmes.
Le menu est défini dans HTML 5.1 2nd Edition .
Nav est défini en HTML 5 .
Il y a des notes pour la navigation que je n'ai pas incluses mais que je pense importantes, mais je pense qu'il est préférable que vous obteniez la définition vous-même à partir des normes.
Les définitions marquées dans cet article comme la réponse sont presque correctes, mais contiennent des déclarations superflues qui rendent la réponse elle-même erronée.
la source
<nav>
est une section (comme<section>
ou<article>
) afin qu'elle apparaisse dans le plan de votre document HTML. Pour cette raison, j'utiliserais<menu>
99% du temps. Pour moi,<nav>
c'est un mélange entre<section>
et<menu>
, avec la restriction supplémentaire qui<nav>
devrait être utilisée spécifiquement pour la navigation, alors que cela<menu>
peut être pour tout ce qui pourrait être appelé un menu (y compris une barre de navigation). Ainsi, la plupart des barres de navigation, bien qu'il s'agisse de barres de navigation, ne répondent pas aux exigences strictes de<nav>
et<menu>
sont plus appropriées.Je n'ai jamais dans ma carrière de développement Web trouvé une situation où je voulais que ma barre de navigation fasse partie du plan du document.
la source
<menu>
sur un site Web qui n'est pas une application Web - 99% du temps, votre `` menu '' de navigation sera des liens statiques vers d'autres pages ou d'autres sections de la page, ce qui<nav>
est pour cela, selon aux spécifications.nav
n'est pas un bon choix de balise car ilnav
s'agit d'un élément de section, il fera donc partie du plan du document comme s'il s'agissait d'une section avec un en-tête et un contenu. Il s'agit en fait d'un scénario rare où vous voulez que vousnav
agissiez comme une section.menu
était juste une suggestion comme un remplacement sémantique. Je ne vois rien dans la spécification indiquant qu'il ne peut pas être utilisé de cette manière. Semble convenir. Mais si, pour une raison quelconque, vous pensez que ce menu n'est que pour ce que vous définissez comme une application Web, alors je recommandeol
ouul
en remplacement.<menu>
toujours un support médiocre pour le moment. (Est-il vraiment vrai que Chrome n'a pas de support pour cela ??) En outre, vous pouvez obtenir exactement la même sémantique en fournissant l'role="menu"
attribut à un autre élément (par exemple un div ou un nav). L'attribut role remplace la sémantique par défaut de tout élément.