aria-hidden
Usuwa element i wszystkich jego potomków z drzewa dostępności. Użytkownicy widzący nadal widzą element; technologia wspomagająca nigdy do niego nie dociera. Stosuj wyłącznie dla treści dekoracyjnych; nigdy nie nakładaj na element, który może otrzymać fokus.
Kiedy używać
Na treściach dekoracyjnych, które nic nie wnoszą dla użytkowników czytników ekranu — zazwyczaj ikonach obok etykiety tekstowej, separatorach, grafikach tła lub zduplikowanym tekście służącym wyłącznie celom layoutu. Oznaczanie tych elementów aria-hidden="true" pozwala drzewu dostępności skupić się na treściach znaczących.
Porównanie z podobnymi mechanizmami:
aria-hidden="true"— widoczny dla użytkowników widzących, niewidoczny dla technologii wspomagającej. Element nadal zajmuje miejsce w layoucie.- CSS
display: nonei atrybut HTMLhidden— niewidoczny dla wszystkich (użytkowników widzących i technologii wspomagającej). Element nie jest renderowany w ogóle. - CSS
visibility: hidden— niewidoczny dla wszystkich, ale element nadal zajmuje miejsce w layoucie. - Atrybut
inert— element i jego potomkowie są nieaktywni pod kątem fokusu, zdarzenia kliknięcia są blokowane, ale pozostają w drzewie dostępności (w odróżnieniu odaria-hidden). Właściwe narzędzie dla tła modali i wygaszanych ekranów.
Co kluczowe: nigdy nie nakładaj aria-hidden="true" na element, który jest — lub zawiera — element z możliwością fokusu. Użytkownicy klawiatury nadal mogą na niego trafić tabulatorem, ale czytnik ekranu nie ogłosi go. Lądują na elemencie, który jest dla nich niewidoczny. To jeden z najczęściej raportowanych błędów axe-core.
Jak utrzymywać synchronizację
Prawidłowe wartości to "true", "false" i "undefined". Użyteczna jest wartość "true"; "false" istnieje, by nadpisać aria-hidden na elemencie nadrzędnym, co w praktyce jest prawie nigdy potrzebne.
Stan może być statyczny (ikona zawsze dekoracyjna) lub dynamiczny. Jeśli przełączasz aria-hidden na obszarze — na przykład ukrywając główną aplikację gdy modal jest otwarty — synchronizuj go z rzeczywistym stanem wizualnym i łącz z inert, by obszar był też nieaktywny pod kątem fokusu.
Typowe błędy
aria-hidden="true"na elemencie, który może otrzymać fokus — najczęściej zgłaszany problem axe-core.- Używanie
aria-hiddendo ukrycia widocznego tekstu, którego czytniki ekranu nie powinny czytać. Usuń tekst lub przenieś go poza DOM. - Pomięcie
aria-hidden="true"na czysto dekoracyjnej ikonie obok opatrzonego etykietą przycisku — czytnik ekranu ogłasza dostępną nazwę ikony oprócz etykiety przycisku. - Ustawienie
aria-hidden="true"na elemencie<body>lub<main>w celu zablokowania treści tła za modalem, bez jednoczesnego użyciainert— fokus klawiatury nadal może uciec. - Używanie
aria-hidden="false"do „pokazania” czegoś ukrytego przez CSS. CSS nadal to ukrywa.
Przykład
<button type="button">
<svg aria-hidden="true" focusable="false" width="16" height="16">…</svg>
Zapisz
</button>