Prijeđi na sadržaj

Tutorijal

Pristupačan naziv: ispravna upotreba aria-labela

1 min čitanja

Ukratko

Pristupačan naziv je ono što čitač zaslona najavljuje za kontrolu. Vidljiv tekst u elementu već jest naziv, a aria-label ga zamjenjuje. Zato aria-label postavljajte samo ondje gdje nema vidljivog teksta (gumbi s ikonom) i vidljivu oznaku uvijek zadržite u nazivu, inače glasovno upravljanje zakaže (2.5.3).

Ukratko po koracima

  1. Pronađite elemente bez teksta

    Potražite gumbe i poveznice koje sadrže samo ikonu ili grafiku.

  2. Dodijelite naziv

    Dodajte aria-label koji opisuje funkciju i sakrijte grafiku s aria-hidden.

  3. Poštujte vidljivu oznaku

    Gdje je tekst vidljiv, taj tekst mora biti u nazivu. Bez proturječnog aria-labela.

  4. Provjerite stablo pristupačnosti

    Otvorite stablo pristupačnosti u DevTools i pročitajte razriješen naziv.

Asistivna tehnologija ne vidi vaš kod, nego stablo pristupačnosti razriješeno iz njega. U tom stablu svaka kontrola ima ulogu (gumb, poveznica, potvrdni okvir) i naziv. Bez naziva čuje se samo uloga: „gumb“. To je pogađanje s posljedicama.

Odakle dolazi naziv

  1. aria-labelledby (upućuje na vidljiv tekst) pobjeđuje sve ostalo.
  2. aria-label (slobodan tekst) pobjeđuje sadržaj samog elementa.
  3. Vidljiv tekstualni sadržaj elementa, odnosno povezana oznaka kod polja obrasca.
  4. Zamjenski izvori poput title ili alt, ovisno o elementu.

Bitno u tom redoslijedu: aria-label nadjačava vidljiv tekst. To je pogrešno upravo onda kada dobar tekst već postoji.

Četiri klasične pogreške

Prije: ne stiže ništa ili stiže krivoHTML
<!-- 1. Kein Name: der Screenreader sagt nur "Schaltflaeche" -->
<button class="icon-btn">
  <svg><use href="#icon-close"></use></svg>
</button>

<!-- 2. Sichtbare Beschriftung und Name gehen auseinander:
     "Absenden" steht da, "Formular abschicken 2" wird angesagt.
     Sprachsteuerung ("Klick Absenden") findet den Button nicht mehr -->
<button aria-label="Formular abschicken 2">Absenden</button>

<!-- 3. aria-label ueberschreibt vorhandenen, guten Text -->
<a href="/preise" aria-label="Link">Preise ansehen</a>

<!-- 4. Div als Button: keine Rolle, kein Name, nicht fokussierbar -->
<div class="btn" onclick="save()">Speichern</div>

Kako se radi ispravno

Poslije: naziv postoji i odgovaraHTML
<!-- 1. Icon-Button: Name per aria-label, Grafik ausgeblendet -->
<button class="icon-btn" aria-label="Dialog schliessen">
  <svg aria-hidden="true" focusable="false"><use href="#icon-close"></use></svg>
</button>

<!-- 2. Sichtbarer Text IST der Name: kein aria-label noetig -->
<button>Absenden</button>

<!-- 3. Wenn ein Zusatz noetig ist, sichtbaren Text einschliessen -->
<a href="/preise" aria-label="Preise ansehen, oeffnet die Preisuebersicht">
  Preise ansehen
</a>

<!-- 4. Echtes Element statt div: Rolle, Fokus und Tastatur gratis -->
<button type="button" onclick="save()">Speichern</button>

Pravilo: vidljiv tekst pobjeđuje aria-label. Ako treba dodatni kontekst, dopišite ga i zadržite vidljiv tekst na početku umjesto da ga zamijenite.

Više jednako označenih gumba

aria-labelledby iz postojećeg tekstaHTML
<!-- Mehrere gleich beschriftete Buttons unterscheidbar machen:
     aria-labelledby setzt den Namen aus vorhandenem Text zusammen -->
<tr>
  <td id="row-4711">Laufschuh Modell 4711</td>
  <td>
    <button id="del-4711" aria-labelledby="del-4711 row-4711">
      Loeschen
    </button>
  </td>
</tr>
<!-- Angesagt wird: "Loeschen Laufschuh Modell 4711, Schaltflaeche" -->

U tablicama i popisima često stoji deset gumba s istim tekstom. Tko zatraži popis kontrola stranice, čuje „obriši“ deset puta. aria-labelledby slaže naziv iz teksta retka bez promjene vidljivog sučelja.

Provjera

  1. Otvorite DevTools, odaberite element i pročitajte ulogu i naziv u odjeljku pristupačnosti.
  2. Ako je naziv prazan ili odgovara nazivu datoteke ili ikone, pogrešan je.
  3. Usporedite vidljiv tekst s nazivom: vidljiv tekst mora se u njemu pojaviti.

Česta pitanja

Kada je aria-label pogrešan?
Uvijek kada element već ima vidljiv tekst koji opisuje njegovu funkciju. aria-label taj tekst nadjačava i stvara proturječje između onoga što se vidi i onoga što se najavljuje.
Je li title atribut dovoljan kao naziv?
Ne, nemojte se oslanjati na njega. title se pojavljuje samo na prelasku mišem, na dodirnim uređajima uopće se ne prikazuje, a asistivna tehnologija ga tretira neujednačeno. Koristite vidljiv tekst ili aria-label.
Zašto aria-hidden na ikoni?
Da se grafika ne najavljuje uz naziv. Naziv gumba nosi aria-label, a sama ikona ne nosi zasebnu informaciju. focusable="false" usto sprječava da SVG postane fokusabilan u starijim mehanizmima.

Zatražite besplatno skeniranje

Recite nam svoju domenu - provodimo besplatno početno skeniranje i pokazujemo najvažnije prepreke.