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 toto riešenie prístupné

Pri auditoch prístupnosti sa často stretávame s tým, že tlačidlo na otvorenie menu je vytvorené iba ako prvok div, a preto nemá sémantiku tlačidla ani podporu pre ovládanie pomocou klávesnice. V iných prípadoch obsahuje iba ikonu bez prístupného názvu a chýbajú mu ARIA atribúty, ktoré informujú o aktuálnom stave navigácie.

V našom riešení je na otvorenie navigácie použitá natívna HTML značka button s textom "Menu", atribútom aria-expanded a aria-controls. Atribút aria-expanded informuje používateľov asistenčných technológií o tom, či je navigácia otvorená alebo zatvorená, zatiaľ čo aria-controls programovo prepája tlačidlo s navigáciou, ktorú ovláda.

Poradie zamerania zodpovedá logickému usporiadaniu navigácie. Po otvorení menu zostáva zameranie na tlačidle "Menu" a ďalším zamerateľným prvkom je prvá položka navigácie. Používateľ ovládajúci stránku pomocou klávesnice tak prirodzene pokračuje priamo do otvoreného menu bez potreby prechádzať cez ďalšie prvky stránky.

Vyskúšajte si komponent

Klávesnica

  • Zúžte okno prehliadača pod približne 768 px a pomocou klávesu Tab prejdite na tlačidlo "Menu". Zamerané tlačidlo môžete otvoriť a zatvoriť klávesom Enter alebo Space. Otvorenú navigáciu je možné zatvoriť aj klávesom Escape.
  • Pomocou klávesu Tab môžete následne prechádzať jednotlivými položkami navigácie.

Čítač obrazovky

  • Pri zameraní na tlačidlo "Menu" čítač obrazovky oznámi jeho názov, sémantiku a aktuálny stav navigácie, napríklad v zatvorenom stave "Menu tlačidlo zatvorené" a po otvorení "Menu tlačidlo otvorené".

Použitie bez JavaScriptu

Ak JavaScript nie je dostupný alebo sa nenačíta, navigácia sa zobrazí ako bežné desktopové menu a všetky jej položky zostávajú používateľovi dostupné.

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>