4.1.2 Tlačidlo mobilnej ponuky nemá programovo určený stav rozbalenia

Added by Milan Regec Milan R. (October 2, 2026)
Notes

Porušenie sa týka celého webového sídla.


Popis problému:

V úzkom zobrazení (pod 1024 CSS pixelov) sa hlavná navigácia otvára tlačidlom s ikonou ponuky v hlavičke. Tlačidlo má skrytý text <span class="sr-only">Otvoriť menu</span>, nemá však atribút aria-expanded ani aria-controls. Po otvorení ponuky zostáva jeho prístupný názov „Otvoriť menu“ a stav sa nijako neoznámi. Ponuku nie je možné zatvoriť klávesou Escape. Overené klávesnicou pri šírke 390 CSS pixelov.


Dopad:

Používatelia čítačov obrazovky na mobilných zariadeniach a pri zväčšení obrazovky (kde sa zobrazuje mobilné rozloženie) po aktivovaní tlačidla nedostanú informáciu, či sa ponuka otvorila alebo zatvorila, a tlačidlo im naďalej ponúka „Otvoriť menu“ aj vtedy, keď je ponuka otvorená. Používatelia klávesnice musia na zatvorenie ponuky hľadať tlačidlo späť.


Závažnosť: stredná — navigácia je použiteľná, stav ovládacieho prvku však nie je programovo dostupný.


Efektívne riešenie:

Pre splnenie kritéria úspešnosti je potrebné tlačidlu doplniť atribút aria-expanded, ktorého hodnotu Alpine.js mení podľa stavu, a aria-controls s id ponuky. Text „Otvoriť menu“ je vhodné zmeniť na neutrálne „Menu“, aby nebol v rozpore so stavom:


<button type="button" @click="mobileMenuOpen = !mobileMenuOpen"
        :aria-expanded="mobileMenuOpen.toString()" aria-controls="mobile-menu"
        @keydown.escape.window="mobileMenuOpen = false">
  <span class="sr-only">Menu</span> …
</button>
<div id="mobile-menu" x-show="mobileMenuOpen">…</div>


1-mobilna-ponuka-otvorena.png
1-mobilna-ponuka-otvorena.png Download