switch
Merkitsee elementin on/off-kytkimeksi. Toiminnallisesti lähellä valintaruutua, mutta ilmoitetaan muodossa "kytkin, päällä" tai "kytkin, pois" eikä "valittu" — sopii paremmin asetuskytkimeen. Natiivista HTML:stä ei löydy vastaavaa elementtiä.
Milloin käyttää
Binaariseen asetuskontrolliin, jossa “päällä” ja “pois” kuvaavat tilaa paremmin kuin “valittu” ja “ei valittu” — Wi-Fi, tummapohjainen tila, ilmoitukset, lentokonetila. Natiivista HTML:stä ei löydy kytkinelementin vastinetta, joten on kaksi kelpaavaa lähestymistapaa:
<button type="button" role="switch" aria-checked="false">— suositeltava, koska saat natiivipainikkeen kohdistuksen ja aktivoinnin ilmaiseksi.<input type="checkbox" role="switch">— myös hyväksyttävä; lomakkeen lähetys toimii edelleen, ja roolin ylikirjoitus muuttaa avustavan teknologian ilmoitustavan.
Älä käytä role="switch"-roolia asioille, jotka eivät ole aidosti binaarisia. Jos toiminto navigoi, avaa valikon tai käynnistää prosessin, käytä button- tai link-roolia.
Näppäimistö- ja kohdistussopimus
APG:n kytkinkuvion mukaan:
- Tab siirtää kohdistuksen kytkimeen.
- Välilyönti vaihtaa
aria-checked-arvoa. Enter PITÄISI myös vaihtaa (APG suosittelee molempia, koska käyttäjät odottavat painikemaista käytöstä painikkeeseen perustuvalta kytkimeltä). - Kohdistus pysyy kytkimessä vaihdon jälkeen.
aria-checked hyväksyy kytkimessä vain arvot "true" tai "false" — "mixed" on tässä virheellinen.
Yleiset virheet
role="switch"ilmanaria-checked-attribuuttia ensimmäisessä renderöinnissä. Tila on pakollinen.aria-checked="mixed"kytkimessä. Kelvollinen vain valintaruudussa.aria-pressed-attribuutin käyttöaria-checked-attribuutin sijaan.aria-pressedkuuluu vaihtopainikkeelle (mykistys/ääni), jossa painike suorittaa toiminnon. Kytkin edustaa asetuksen tilaa.- Kytkin, joka ei päivitä
aria-checked-arvoa, kun se vaihdetaan pelkällä CSS:llä. - Pienet kytkimen osumisalueet, jotka eivät täytä WCAG 2.5.8 -kohteenarvo. Interaktiivisen alueen on oltava vähintään 24×24 CSS-pikseliä.
Esimerkki
<button
type="button"
role="switch"
aria-checked="false"
onclick="
const next = this.getAttribute('aria-checked') === 'true' ? 'false' : 'true';
this.setAttribute('aria-checked', next);
"
>
Tummapohjainen tila
</button>