W3Schools.com i jestem prawie pewien, że pamiętam stan W3C.org, który <menu>
powinien być używany do menu paska narzędzi Toolbar i wyświetlania poleceń sterujących formularzami.
Więc którego z nich powinienem użyć w menu głównym? Nav
lub Menu
? Czy to ma znaczenie?
Odpowiedzi:
nav
służy do grup linków wewnętrznych (a
elementów). Ogólnie oznacza to, że linki powinny prowadzić do oddzielnych stron lub zmieniać zawartość w przypadku strony AJAX. Spodziewaj się zmiany treści po kliknięciunav
elementu.menu
stosuje się dla grupy kontrolnej (a
,input
,button
). Ogólnie oznacza to, że dane wejściowe powinny pełnić funkcję na stronie. Po kliknięciumenu
elementu spodziewaj się interakcji w języku JavaScript .nav
: nawigacja w witrynie.menu
: menu aplikacji internetowej.źródło
<li>
elementów bezpośrednio pod<menu>
tagiem, bez konieczności tworzenia<ul>
listy. Wymagane jest,<menu>
abytype
atrybut ' został pominięty lub ustawiony na"toolbar"
. Patrz specyfikację do<li>
elementu i do<menu>
elementu .<menu>
jedną ze specyfikacji W3C HTML5? Znajduję to w wersji WHAT WG , ale nie w najnowszej wersji roboczej W3C HTML 5.3 .Oto post HTML5Doctor
nav
z sekcją o tym, czym różni się odmenu
(w zasadzie używaj go w rzeczywistych aplikacjach). Wygląda na to, że chcesznav
.źródło
Dzięki
<menu>
temu jest zwykle używany w menu kontekstowych.MDN ma na ten temat dobrą dokumentację: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/menu
źródło
Najlepszym miejscem na uzyskanie tej odpowiedzi są standardy HTML 5.
Menu jest zdefiniowane w HTML 5.1 2nd Edition .
Nav jest zdefiniowany w HTML 5 .
Są notatki dotyczące nawigacji, których nie uwzględniłem, ale uważam, że są ważne, ale myślę, że najlepiej będzie, jeśli samodzielnie uzyskasz definicję ze standardów.
Definicje zaznaczone w tym poście jako odpowiedź są bliskie poprawności, ale zawierają obce stwierdzenia, które powodują, że sama odpowiedź jest błędna.
źródło
<nav>
jest sekcją (na przykład<section>
lub<article>
), więc pojawi się w konspekcie dokumentu HTML. Z tego powodu wykorzystałbym<menu>
99% czasu. Dla mnie<nav>
jest to połączenie<section>
i<menu>
, z dodatkowym ograniczeniem, które<nav>
powinno być używane specjalnie do nawigacji, podczas gdy<menu>
może dotyczyć wszystkiego, co można nazwać menu (w tym paskiem nawigacyjnym). Dlatego większość pasków nawigacyjnych, mimo że są paskami nawigacyjnymi, nie spełnia rygorystycznych wymagań<nav>
i<menu>
jest bardziej odpowiednia.Nigdy w swojej karierze programistycznej nie znalazłem sytuacji, w której chciałbym, aby pasek nawigacji był częścią konspektu dokumentu.
źródło
<menu>
na stronie internetowej, że nie jest to aplikacja internetowa - 99% czasu, Twoja nawigacja „menu” będzie statyczne linki do innych stron lub innych sekcji na stronie, która jest, co<nav>
jest, według do specyfikacji.nav
nie jest to dobry wybór tagów, ponieważnav
jest to element sekcji, więc stanie się częścią konspektu dokumentu, jakby była to sekcja z nagłówkiem i treścią. W rzeczywistości jest to rzadki scenariusz, w którym chcesz, abyśnav
zachowywał się jak sekcja.menu
była tylko sugestią jako zamiennik semantyczny. Nie widzę w specyfikacji nic, co mówi, że nie można go używać w ten sposób. Wydaje się pasować. Ale jeśli z jakiegoś powodu uważasz, że menu jest tylko tym, co określasz jako aplikację internetową, polecamol
lubul
jako zamiennik.<menu>
nadal ma słabe wsparcie. (Czy to prawda, że Chrome nie obsługuje tego?). Możesz również osiągnąć dokładnie tę samą semantykę, podającrole="menu"
atrybut innemu elementowi (np. Div lub nav). Atrybut role zastępuje domyślną semantykę dowolnego elementu.