W3Schools.com e tenho certeza que me lembro de ter visto o estado W3C.org que <menu>
deve ser usado para menus da barra de ferramentas e comandos de controle de formulário de listagem.
Então, qual devo usar no meu menu principal? Nav
, ou Menu
? Isso importa?
Respostas:
nav
é usado para grupos de links internos (a
elementos). Geralmente, isso significa que os links devem viajar para páginas separadas ou alterar o conteúdo no caso de uma página AJAX. Espere algum tipo de mudança de conteúdo ao clicar em umnav
item.menu
é usado para os grupos de controlo (a
,input
,button
). Geralmente, isso significa que as entradas devem executar uma função dentro da página. Espere algum tipo de interação de javascript ao clicar em ummenu
item.nav
: a navegação pelo site.menu
: o menu de um aplicativo da web.fonte
<li>
elementos diretamente sob uma<menu>
tag, sem a necessidade de uma<ul>
lista. A exigência é que o<menu>
'stype
atributo é omitido ou definido como"toolbar"
. Veja a especificação do<li>
elemento e do<menu>
elemento .<menu>
em uma das especificações W3C HTML5? Estou encontrando na versão WHAT WG , mas não no último rascunho do W3C HTML 5.3 .Aqui está uma postagem do HTML5Doctor
nav
com uma seção sobre como ele é diferentemenu
(basicamente, use-o em aplicativos reais). Parece que você quernav
.fonte
Com
<menu>
ele é geralmente usado para menus de contexto.O MDN tem uma boa documentação sobre ele: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu
fonte
O melhor lugar para obter essa resposta são os próprios padrões do HTML 5.
O menu é definido em HTML 5.1 2ª edição .
Nav é definido em HTML 5 .
Há notas para navegação que não incluí, mas acho que são importantes, mas acho que é melhor você mesmo obter a definição dos padrões.
As definições marcadas neste post como a resposta estão quase corretas, mas contêm afirmações estranhas que tornam a própria resposta errada.
fonte
<nav>
é uma seção (como<section>
ou<article>
) para que apareça no esboço do documento HTML. Devido a isso, eu usaria<menu>
99% do tempo. Para mim,<nav>
é uma mistura entre<section>
e<menu>
, com a constrição adicional que<nav>
deve ser usada especificamente para navegação, enquanto<menu>
pode ser para qualquer coisa que possa ser chamada de menu (incluindo uma barra de navegação). Portanto, a maioria das barras de navegação, apesar de serem barras de navegação, não se enquadram nos requisitos estritos<nav>
e<menu>
são mais adequadas.Nunca, em minha carreira de desenvolvimento web, encontrei uma situação em que desejasse que minha barra de navegação fizesse parte do esboço do documento.
fonte
<menu>
em um site que não seja um aplicativo da web - 99% do tempo, seu 'menu' de navegação será links estáticos para outras páginas ou outras seções da página, que<nav>
é para isso, de acordo para a especificação.nav
não é uma boa escolha de tag porquenav
é um elemento de seção, portanto, se tornará parte do esboço do documento como se fosse uma seção com um cabeçalho e conteúdo. Na verdade, esse é um cenário raro em que você desejanav
que aja como uma seção.menu
foi apenas uma sugestão como uma substituição semântica. Não vejo nada nas especificações dizendo que não pode ser usado dessa forma. Parece se encaixar. Mas se você, por algum motivo, acredita que o menu é apenas para o que você define como um aplicativo da web, eu recomendool
ouul
como um substituto.<menu>
ainda tem suporte ruim no momento. (É realmente verdade que o Chrome não tem suporte para isso ??) Além disso, você pode obter exatamente a mesma semântica fornecendo orole="menu"
atributo a outro elemento (por exemplo, um div ou um nav). O atributo role substitui a semântica padrão para qualquer elemento.