menubar
Markerar en behållare som en beständig menyradslist — den alltid synliga horisontella remsan med Fil/Redigera/Visa-menyer som ses i skrivbordsappar. Skiljer sig från menu, som är ett popup-element. Nästan aldrig rätt mönster på webben.
När du ska använda
För en beständig menyrad i applikationsstil som speglar en skrivbordsapps huvudmeny (Fil, Redigera, Visa, …). De mest legitima användningsfallen är i webbaserade redigeringsverktyg, IDE:er och helskärmsproduktivitetsappar.
Om din “menyrad” egentligen är en webbplats sidhuvudsnavigering är det INTE en menubar. Använd <nav> med <ul> av <a>-länkar. Menubar-rollen kräver enda tab-stop, pilnavigering och Escape för att stänga — inget av det matchar användarens förväntningar på ett webbplatssidhuvud.
Barn till en menubar är vanligtvis role="menuitem"-utlösare som öppnar undermenyer (aria-haspopup="menu").
Tangentbords- och fokuskontrakt
Enligt APG:s menyradsmönster:
- Tab anger menyraden till det första eller senast fokuserade objektet; Tab flyttar UT.
- Vänster/höger-pilar flyttar fokus mellan menyradsobiekt på toppnivå (med omslagning).
- Nedpil (eller Enter/Mellanslag) öppnar det fokuserade objektets undermeny och flyttar fokus till dess första menyobjekt.
- Uppil öppnar undermenyn och flyttar fokus till det sista menyobjektet.
- Escape inuti en undermeny stänger undermenyn och återger fokus till dess menyradsobjekt.
- Förtypning: att skriva en bokstav hoppar till nästa objekt som börjar med den bokstaven.
Använd ett rörligt tabindex.
Vanliga fel
role="menubar"på en webbplats primära<nav>. Skillnad mellan meddelad roll och användarens förväntningar.- Varje objekt har
tabindex="0", så Tab cyklar igenom varje menyradsobjekt. Mönstret är enda tab-stop. - Undermenyer som öppnas vid hovring men inte med nedpil.
- Ingen
aria-haspopup/aria-expandedpå menyradsobjekt som utlöser undermenyer. - Escape inuti en undermeny kollapsar men tappar fokus — måste återgå till det överordnade menyradsobjektet.
Exempel
<ul role="menubar" aria-label="Document">
<li role="menuitem" tabindex="0" aria-haspopup="menu" aria-expanded="false">File</li>
<li role="menuitem" tabindex="-1" aria-haspopup="menu" aria-expanded="false">Edit</li>
<li role="menuitem" tabindex="-1" aria-haspopup="menu" aria-expanded="false">View</li>
<li role="menuitem" tabindex="-1" aria-haspopup="menu" aria-expanded="false">Help</li>
</ul>