Rozbaľovacia navigácia
Hlavná navigácia, ktorá sa na úzkych obrazovkách zbalí za tlačidlo Menu, oznamuje svoj stav, zatvára sa klávesom Escape a bez JavaScriptu zostáva jednoducho viditeľná.
Ukážka
Zúžte okno prehliadača pod približne 768 px alebo si stránku otvorte na telefóne: navigácia sa zbalí za tlačidlo Menu.
Prečo je to prístupné
„Hamburgerové“ menu býva pre klávesnicu a čítač obrazovky neviditeľné: ikona bez názvu, ponuka bez stavu, zameranie, ktoré po zatvorení zmizne. Tu je tlačidlo obyčajný button s textom „Menu“ a atribútom aria-expanded, takže čítač obrazovky povie „Menu, tlačidlo, zbalené“ a po otvorení „rozbalené“. Tlačidlo stojí v poradí Tab priamo pred zoznamom, ktorý ovláda.
Zbalenie sa deje iba pod približne 768 px a iba vtedy, keď sa skript naozaj načítal. Na širokej obrazovke je navigácia vždy viditeľná a tlačidlo neexistuje. Odkazy na preskočenie na začiatku stránky vedú na hlavný obsah, na vyhľadávanie s nastaveniami a na pätičku; navigácia je hneď za logom, takže preskakovať na ňu netreba.
Vyskúšajte si sami
Klávesnica
- Zúžte okno pod 768 px. Tab na tlačidlo Menu, Enter ho otvorí.
- Tab prechádza položky; Escape menu zavrie a vráti zameranie na tlačidlo.
- Kliknutie mimo menu ho tiež zavrie.
Čítač obrazovky
- Tlačidlo oznámi názov „Menu“ a stav zbalené / rozbalené. Navigácia je oblasť „Hlavná navigácia“, takže sa na ňu dá skočiť aj cez zoznam oblastí.
Priblíženie a reflow
- Pri 400 % priblížení sa stránka správa ako na telefóne: navigácia sa zbalí a odkazy majú výšku aspoň 44 px.
Bez JavaScriptu
Zoznam odkazov je zobrazený pri každej šírke obrazovky. Tlačidlo Menu vytvára až skript, takže bez neho nič nechýba ani nič nezavadzia.
Kód
<ad-disclosure-nav data-open-label="Menu">
<nav id="site-navigation" aria-label="Hlavná navigácia">
<ul role="list">
<li><a href="/o-nas/">O nás</a></li>
<li><a href="/sluzby/">Služby</a></li>
</ul>
</nav>
</ad-disclosure-nav>
<link rel="stylesheet" href="/assets/js/components/ad-disclosure-nav/ad-disclosure-nav.css">
<script type="module" src="/assets/js/components/ad-disclosure-nav/ad-disclosure-nav.js"></script>