aria-expanded
Angiver, om et sammenklappelig element — disclosure-knap, combobox, menu, treeitem — aktuelt er åbent. Tager "true" eller "false". Parres typisk med aria-controls, der peger på den region, kontrolelementet åbner.
Hvornår skal den bruges
På ethvert kontrolelement, der åbner og lukker en anden region i brugergrænsefladen: en accordionoverskrift, en “vis mere”-disclosure-knap, en combobox-trigger, en menuknap, et treeitem med underordnede elementer, en hamburger-nav-toggle. Kontrolelementet er det samme element i begge tilstande — kun attributten skifter.
Veksler kontrolelementet tilstand på sig selv (slå lyd til/fra, følg/hold op med at følge), bruges aria-pressed i stedet. aria-expanded beskriver et forhold til en anden region, typisk identificeret ved aria-controls.
Rollen afgør, om aria-expanded er meningsfuld: den understøttes på button, combobox, link, tab, treeitem, menuitem, gridcell, row og enkelte andre. Placering på en <div> uden rolle giver intet nyttigt.
Sådan holdes den synkroniseret
Gyldige værdier er "true" (region er åben) og "false" (region er lukket). Standard ved udeladelse er “ingen udvidet tilstand overhovedet” — hvilket er forskelligt fra "false". Er kontrolelementet nogensinde udvidbart, rendres aria-expanded="false" i lukket tilstand frem for at udelade den.
Opdater attributten i samme kodeblok, der animerer regionen åben eller lukket. Attributten er den kilde, skærmlæsere læser; den visuelle pil er et sekundært signal for seende brugere.
Parres med aria-controls="<region-id>", så skærmlæseren kan annoncere forholdet: “Filtre, knap, sammenklappet, styrer filter-panel”. Nogle hjælpeteknologier tilbyder en genvej til at springe til den styrede region.
Typiske fejl
- Skift af en CSS-klasse på panelet, men glemme at skifte
aria-expanded. - Brug af
aria-expandedpå et ikke-interaktivt element uden rolle. Attributten ignoreres. - Kun tilføjelse af
aria-expanded="true"— aldrig rendering af"false"-tilstanden. Skærmlæsere annoncerer intet i lukket tilstand. - Brug af
aria-expandedpå et kontrolelement, der ikke faktisk udvider en region (en “Indsend”-knap). - Forveksling af
aria-expandedmedaria-pressedpå toggle-knapper, der ikke åbner en separat region. - Udeladelse af
aria-controls, så forholdet mellem trigger og panel er implicit.
Eksempel
<button
type="button"
aria-expanded="false"
aria-controls="filters-panel"
onclick="toggle(this)"
>
Filtre
</button>
<div id="filters-panel" hidden>
<!-- filterkontroller -->
</div>