aria-checked
Wskazuje bieżący stan zaznaczenia pola wyboru, przycisku radio lub elementu menu w stylu checkboxa. Przyjmuje wartości „true", „false" lub „mixed". Natywny checkbox HTML zarządza tym automatycznie — ustawiaj ręcznie tylko na niestandardowych widżetach.
Kiedy używać
Na widżetach posiadających binarną lub trójstanową semantykę zaznaczenia: role="checkbox", role="radio", role="menuitemcheckbox", role="menuitemradio" i role="switch". Jeśli używasz natywnego <input type="checkbox"> lub <input type="radio">, przeglądarka już eksponuje stan zaznaczenia do technologii wspomagających — nie duplikuj go atrybutem aria-checked.
Rozróżnij od sąsiednich stanów:
aria-checked— dla „ta opcja jest wybrana ze zbioru opcji, często niezależnie od innych”. Pola wyboru i przyciski radio.aria-pressed— dla przycisków przełączających (wycisz / odcisz). Element jest koncepcyjnie przyciskiem; stan określa, czy akcja jest aktualnie włączona.aria-selected— dla elementów wewnątrz kontenera z pojedynczym wyborem, takich jaktablist,listboxlubtree. Stan należy do modelu selekcji kontenera, nie do samego elementu.
Jak utrzymywać synchronizację
Prawidłowe wartości to "true", "false", "mixed" i "undefined". Używaj "mixed" tylko na nadrzędnym polu wyboru podsumowującym grupę podrzędnych pól w niespójnych stanach (klasyczny wzorzec nieokreślonego „zaznacz wszystkie”). "undefined" jest rzadkie w praktyce; większość autorów używa zamiast tego "false".
Atrybut musi odzwierciedlać to, co widzi użytkownik. Cokolwiek handler kliknięcia i klawiatury aktualizuje wizualny znacznik zaznaczenia, musi również zapisać nową wartość aria-checked w tej samej ścieżce kodu. Nigdy nie styluj wyglądu „zaznaczonego” z CSS bez przełączania atrybutu.
W przypadku role="radio" wewnątrz radiogroup dokładnie jedna opcja powinna mieć aria-checked="true" w danym momencie; pozostałe muszą mieć "false" (nie mogą być nieobecne).
Typowe błędy
- Całkowite pominięcie
aria-checkedna elemencierole="checkbox"— czytnik ekranu ogłasza „pole wyboru” bez stanu. - Przełączanie klasy do pokazania znacznika, bez aktualizowania
aria-checked. - Użycie
aria-checked="true"na natywnym<input type="checkbox">— przeglądarka go ignoruje, a zduplikowany stan może się desynchronizować. - Ustawienie
aria-checked="mixed"na pojedynczym polu wyboru zamiast na elemencie nadrzędnym podsumowującym potomków. - Pozostawienie przycisków radio bez
aria-checked="false"— technologia wspomagająca nie może wywnioskować stanu niezaznaczonego. - Mylenie
aria-checkedzaria-selectedw opcjach listbox lub zakładkach.
Przykład
<div role="group" aria-labelledby="prefs-heading">
<h3 id="prefs-heading">Preferencje e-mail</h3>
<div
role="checkbox"
tabindex="0"
aria-checked="false"
onclick="toggle(this)"
onkeydown="if (event.key === ' ') { event.preventDefault(); toggle(this); }"
>
Wysyłaj mi tygodniowe podsumowania
</div>
</div>