aria-expanded
Wskazuje, czy element zwijaný — przycisk ujawniający, combobox, menu, treeitem — jest aktualnie otwarty. Przyjmuje wartości "true" lub "false". Zazwyczaj łączony z aria-controls wskazującym na region, który kontrolka otwiera.
Kiedy stosować
Na każdej kontrolce, która otwiera i zamyka inny obszar interfejsu: nagłówek akordeonu, przycisk „pokaż więcej”, wyzwalacz comboboxa, przycisk menu, treeitem z elementami podrzędnymi, przełącznik nawigacji hamburger. Kontrolka pozostaje tym samym elementem w obu stanach — zmienia się tylko atrybut.
Jeśli kontrolka przełącza stan na samym elemencie (wycisz / odcisz, obserwuj / przestań obserwować), użyj zamiast tego aria-pressed. aria-expanded opisuje relację z innym regionem, zwykle identyfikowanym przez aria-controls.
Rola decyduje o tym, czy aria-expanded ma znaczenie: jest obsługiwany na button, combobox, link, tab, treeitem, menuitem, gridcell, row i kilku innych. Umieszczenie go na <div> bez roli nie przynosi żadnego efektu.
Jak utrzymywać synchronizację
Prawidłowe wartości to "true" (region jest otwarty) i "false" (region jest zamknięty). Wartość domyślna przy pominięciu to „brak stanu rozwinięcia” — co różni się od "false". Jeśli kontrolka jest kiedykolwiek rozwijalna, renderuj aria-expanded="false" w stanie zamkniętym zamiast pomijać atrybut.
Aktualizuj atrybut w tej samej ścieżce kodu, która animuje otwieranie lub zamykanie regionu. Atrybut jest źródłem prawdy, który czytają czytniki ekranu; wizualna strzałka jest drugorzędną wskazówką dla widzących użytkowników.
Łącz z aria-controls="<id-regionu>", aby czytnik ekranu mógł ogłosić relację: „Filtry, przycisk, zwinięty, kontroluje panel-filtrów”. Niektóre technologie asystujące oferują skrót do przejścia do kontrolowanego regionu.
Częste błędy
- Przełączanie klasy CSS na panelu, ale zapominanie o zmianie
aria-expanded. - Użycie
aria-expandedna nieinteraktywnym elemencie bez roli. Atrybut jest ignorowany. - Dodawanie tylko
aria-expanded="true"— nigdy nie renderując stanu"false". Czytniki ekranu nie ogłaszają niczego w stanie zamkniętym. - Używanie
aria-expandedna kontrolce, która w rzeczywistości nie rozwija żadnego regionu (przycisk „Wyślij”). - Mylenie
aria-expandedzaria-pressedna przyciskach przełączania, które nie otwierają oddzielnego regionu. - Pominięcie
aria-controls, pozostawiając relację między wyzwalaczem a panelem niejawną.
Przykład
<button
type="button"
aria-expanded="false"
aria-controls="filters-panel"
onclick="toggle(this)"
>
Filters
</button>
<div id="filters-panel" hidden>
<!-- filter controls -->
</div>