Suomi

Kattava opas verkkosaavutettavuudesta (a11y) frontend-kehittäjille, joka kattaa periaatteet, tekniikat ja parhaat käytännöt osallistavien verkkokokemusten luomiseen.

Verkkosivujen saavutettavuus (a11y): Käytännön opas frontend-kehittäjille

Verkkosivujen saavutettavuus (lyhennetään usein a11y, jossa 11 kuvaa 'a'- ja 'y'-kirjainten välisten kirjainten määrää) on käytäntö suunnitella ja kehittää verkkosivustoja ja -sovelluksia, jotka ovat vammaisten henkilöiden käytettävissä. Tämä kattaa henkilöt, joilla on näköön, kuuloon, motoriikkaan, kognitiivisiin toimintoihin tai puheeseen liittyviä vammoja. Saavutettavien verkkosivustojen rakentaminen ei ole vain säännösten noudattamista; se on osallistavien ja tasa-arvoisten digitaalisten kokemusten luomista kaikille, riippumatta heidän kyvyistään tai tekniikoista, joilla he käyttävät verkkoa. Se on myös olennaista laajemman yleisön tavoittamiseksi. Esimerkiksi hyvä värikontrasti hyödyttää käyttäjiä kirkkaassa auringonvalossa, ja selkeät asettelut auttavat niitä, joilla on kognitiivisia haasteita tai jotka yksinkertaisesti tekevät useita asioita samanaikaisesti.

Miksi verkkosivujen saavutettavuus on tärkeää?

On olemassa useita painavia syitä priorisoida verkkosivujen saavutettavuutta:

Saavutettavuusstandardien ja -ohjeiden ymmärtäminen

Ensisijainen standardi verkkosaavutettavuudelle on Web Content Accessibility Guidelines (WCAG), jonka on kehittänyt World Wide Web Consortium (W3C). WCAG tarjoaa joukon testattavia onnistumiskriteerejä, joita voidaan käyttää verkkosisällön saavutettavuuden arvioimiseen. WCAG on kansainvälisesti tunnustettu ja siihen viitataan usein saavutettavuuslaeissa ja -säännöksissä ympäri maailmaa.

WCAG on jäsennelty neljän periaatteen ympärille, joihin viitataan usein lyhenteellä POUR:

WCAG:lla on kolme vaatimustenmukaisuuden tasoa: A, AA ja AAA. Taso A on saavutettavuuden perustaso, kun taas taso AAA on kattavin. Useimmat organisaatiot tavoittelevat tason AA vaatimustenmukaisuutta, koska se tarjoaa hyvän tasapainon saavutettavuuden ja käytännöllisyyden välillä. Monet lait ja säännökset vaativat tason AA vaatimustenmukaisuutta.

Käytännön tekniikoita frontend-kehittäjille

Tässä on joitakin käytännön tekniikoita, joita frontend-kehittäjät voivat käyttää parantaakseen verkkosivustojensa ja -sovellustensa saavutettavuutta:

1. Semanttinen HTML

Semanttisten HTML-elementtien käyttö on ratkaisevan tärkeää saavutettavuuden kannalta. Semanttinen HTML antaa merkityksen ja rakenteen sisällöllesi, mikä helpottaa avustavien teknologioiden ymmärtämistä ja tulkitsemista. Sen sijaan, että käyttäisit yleisiä <div>- ja <span>-elementtejä kaikkeen, käytä HTML5:n semanttisia elementtejä, kuten:

Esimerkki:

<header>
  <h1>Verkkosivustoni</h1>
  <nav>
    <ul>
      <li><a href="#">Etusivu</a></li>
      <li><a href="#">Tietoja</a></li>
      <li><a href="#">Ota yhteyttä</a></li>
    </ul>
  </nav>
</header>

<main>
  <article>
    <h2>Artikkelin otsikko</h2>
    <p>Artikkelin sisältö täällä...</p>
  </article>
</main>

<footer>
  <p>© 2023 Verkkosivustoni</p>
</footer>

Oikeiden otsikkotasojen (<h1> - <h6>) käyttäminen on myös olennaista loogisen dokumenttirakenteen luomiseksi. Käytä otsikoita sisällön järjestämiseen ja käyttäjien navigoinnin helpottamiseen. <h1>-otsikkoa tulisi käyttää sivun pääotsikkona, ja seuraavia otsikoita tulisi käyttää informaatiohierarkian luomiseen. Vältä otsikkotasojen yli hyppäämistä (esim. siirtymistä <h2>-otsikosta <h4>-otsikkoon), koska se voi sekoittaa ruudunlukijoiden käyttäjiä.

2. Vaihtoehtoinen teksti kuville

Kaikilla kuvilla tulisi olla merkityksellinen vaihtoehtoinen teksti (alt-teksti), joka kuvaa kuvan sisältöä ja funktiota. Ruudunlukijat käyttävät alt-tekstiä välittääkseen kuvan tiedot käyttäjille, jotka eivät voi nähdä sitä. Jos kuva on puhtaasti koristeellinen eikä välitä mitään tärkeää tietoa, alt-attribuutti tulisi asettaa tyhjäksi merkkijonoksi (alt="").

Esimerkki:

<img src="logo.png" alt="Yrityksen logo">
<img src="decorative-pattern.png" alt="">

Kun kirjoitat alt-tekstiä, ole kuvaileva ja ytimekäs. Keskity välittämään olennainen tieto, jonka kuva tarjoaa. Vältä lauseita kuten "kuva jostakin" tai "kuvassa on", koska ruudunlukijat yleensä ilmoittavat, että kyseessä on kuva.

Monimutkaisille kuville, kuten kaavioille ja graafeille, harkitse yksityiskohtaisemman kuvauksen antamista ympäröivässä tekstissä tai käyttämällä <figure>- ja <figcaption>-elementtejä.

3. Näppäimistön saavutettavuus

Kaikkien interaktiivisten elementtien verkkosivustollasi tulisi olla saavutettavissa näppäimistöllä. Tämä on ratkaisevan tärkeää käyttäjille, jotka eivät voi käyttää hiirtä tai muuta osoitinlaitetta. Varmista, että käyttäjät voivat navigoida verkkosivustollasi Tab-näppäimellä ja olla vuorovaikutuksessa elementtien kanssa Enter- tai Välilyönti-näppäimillä.

Kiinnitä huomiota elementtien kohdistusjärjestykseen sivullasi. Kohdistusjärjestyksen tulisi seurata loogista ja intuitiivista polkua sisällön läpi. Voit käyttää tabindex-attribuuttia kohdistusjärjestyksen hallintaan, mutta yleensä on parasta luottaa elementtien luonnolliseen järjestykseen HTML-koodissa. Käytä tabindex-attribuuttia vain oletuskohdistusjärjestyksen ongelmien korjaamiseen.

Tarjoa visuaalisia kohdistusindikaattoreita näyttääksesi käyttäjille, mikä elementti on tällä hetkellä kohdistettuna. Selaimen oletuskohdistusindikaattori ei välttämättä ole riittävä, joten harkitse oman muotoilun lisäämistä CSS:n avulla. Varmista, että kohdistusindikaattorilla on riittävä kontrasti taustaan nähden.

Esimerkki:

/* CSS */
a:focus, button:focus {
  outline: 2px solid blue;
  outline-offset: 2px;
}

4. ARIA-attribuutit

ARIA (Accessible Rich Internet Applications) on joukko attribuutteja, jotka voidaan lisätä HTML-elementteihin antamaan lisätietoa semantiikasta avustaville teknologioille. ARIA-attribuutteja voidaan käyttää dynaamisen sisällön, monimutkaisten widgetien ja muiden interaktiivisten elementtien saavutettavuuden parantamiseen.

Joitakin yleisiä ARIA-attribuutteja ovat:

Esimerkki:

<button aria-label="Sulje dialogi" onclick="closeDialog()">X</button>
<div role="dialog" aria-labelledby="dialog-title">
  <h2 id="dialog-title">Oma dialogini</h2>
  <p>Dialogin sisältö täällä...</p>
</div>

Kun käytät ARIA-attribuutteja, on tärkeää noudattaa ARIA:n käyttösääntöjä:

5. Värikontrasti

Varmista, että tekstin ja sen taustan välillä on riittävä värikontrasti. Riittämätön värikontrasti voi vaikeuttaa tekstin lukemista käyttäjille, joilla on heikko näkö tai värisokeus.

WCAG vaatii vähintään 4.5:1 kontrastisuhteen normaalille tekstille ja 3:1 suurelle tekstille (18pt tai 14pt lihavoitu). Voit käyttää värikontrastin tarkistustyökaluja varmistaaksesi, että verkkosivustosi täyttää nämä vaatimukset. Saatavilla on monia ilmaisia verkkotyökaluja, kuten WebAIM Contrast Checker.

Esimerkki:

/* CSS */
body {
  color: #333; /* Tummanharmaa teksti */
  background-color: #fff; /* Valkoinen tausta */
}

(Tässä esimerkissä on 7:1 kontrastisuhde, mikä täyttää WCAG-vaatimukset.)

Vältä värin käyttämistä ainoana keinona välittää tietoa. Värisokeat käyttäjät eivät välttämättä pysty erottamaan eri värejä. Käytä lisävihjeitä, kuten tekstiselitteitä tai ikoneita, vahvistamaan värin merkitystä.

6. Lomakkeet ja selitteet

Lomake-elementtien asianmukainen merkitseminen selitteillä on ratkaisevan tärkeää saavutettavuuden kannalta. Käytä <label>-elementtiä yhdistääksesi tekstiselitteen jokaiseen lomakkeen syöttökenttään. <label>-elementin for-attribuutin arvon tulee vastata vastaavan syöttökentän id-attribuutin arvoa.

Esimerkki:

<label for="name">Nimi:</label>
<input type="text" id="name" name="name">

Monimutkaisissa lomakkeissa harkitse <fieldset>- ja <legend>-elementtien käyttöä toisiinsa liittyvien lomakekontrollien ryhmittelyyn. Tämä voi auttaa käyttäjiä ymmärtämään kunkin kontrolliryhmän tarkoituksen.

Anna selkeät ja ytimekkäät virheilmoitukset, kun käyttäjät tekevät virheitä lomakkeen täyttämisessä. Virheilmoitusten tulisi näkyä vastaavan lomakekentän lähellä ja antaa ohjeita virheen korjaamiseen.

Käytä required-attribuuttia osoittamaan, mitkä lomakekentät ovat pakollisia. Tämä voi auttaa käyttäjiä välttämään vahingossa epätäydellisten lomakkeiden lähettämistä.

7. Multimedian saavutettavuus

Varmista, että multimediasisältö, kuten videot ja äänitallenteet, on saavutettavissa vammaisille käyttäjille. Tarjoa tekstitykset videoille ja transkriptiot äänitallenteille. Tekstitysten tulisi tarkasti litteroida videon puhuttu sisältö, mukaan lukien kaikki tärkeät äänitehosteet tai taustamelu.

Suorille videolähetyksille harkitse reaaliaikaisten tekstityspalvelujen käyttöä. Nämä palvelut voivat tarjota tekstityksiä reaaliajassa, mikä mahdollistaa kuulovammaisten käyttäjien sisällön seuraamisen. Monet videoneuvottelualustat tarjoavat sisäänrakennettuja live-tekstitysominaisuuksia.

Tarjoa kuvailutulkkauksia videoille. Kuvailutulkkaukset tarjoavat selostuksen videon visuaalisesta sisällöstä, kuvaillen mitä ruudulla tapahtuu. Kuvailutulkkaukset ovat välttämättömiä sokeille tai heikkonäköisille käyttäjille.

Varmista, että multimediakontrollit, kuten toisto-, tauko- ja äänenvoimakkuussäätimet, ovat saavutettavissa näppäimistöllä.

8. Dynaaminen sisältö ja päivitykset

Kun verkkosivustosi sisältö päivittyy dynaamisesti, on tärkeää ilmoittaa käyttäjille muutoksista. Tämä on erityisen tärkeää ruudunlukijoita käyttäville henkilöille, koska he eivät välttämättä ole tietoisia sisällön muutoksesta.

Käytä ARIA live-alueita ilmoittaaksesi dynaamisista päivityksistä ruudunlukijoille. ARIA live-alueet ovat sivun osia, jotka on määritelty vastaanottamaan päivityksiä. Kun live-alueen sisältö muuttuu, ruudunlukija ilmoittaa muutoksista käyttäjälle. Käytä aria-live-attribuuttia määritelläksesi live-alueen. aria-atomic- ja aria-relevant-attribuuteilla voidaan hienosäätää, miten ruudunlukija ilmoittaa muutoksista.

Esimerkki:

<div aria-live="polite">
  <p id="status-message">Ladataan...</p>
</div>

<script>
  // Päivitä tilaviesti, kun tiedot on ladattu
  function updateStatus(message) {
    document.getElementById("status-message").textContent = message;
  }
</script>

Tässä esimerkissä aria-live="polite"-attribuutti osoittaa, että ruudunlukijan tulisi ilmoittaa <div>-elementin sisällön muutoksista, mutta sen ei pitäisi keskeyttää käyttäjän nykyistä tehtävää. updateStatus()-funktio päivittää <p>-elementin sisällön, mikä saa ruudunlukijan ilmoittamaan uudesta tilaviestistä.

9. Saavutettavuuden testaus

Testaa verkkosivustoasi säännöllisesti saavutettavuuden varalta tunnistaaksesi ja korjataksesi mahdolliset ongelmat. On olemassa useita työkaluja ja tekniikoita, joita voit käyttää saavutettavuuden testaamiseen.

Saavutettavuus selaimen ulkopuolella

Vaikka tämä opas keskittyy pääasiassa verkkosaavutettavuuteen selaimen kontekstissa, on tärkeää muistaa, että saavutettavuus ulottuu verkon ulkopuolelle. Harkitse saavutettavuutta myös muilla digitaalisilla alueilla, kuten:

Yhteenveto

Verkkosivujen saavutettavuus on olennainen osa frontend-kehitystä. Noudattamalla tässä oppaassa esitettyjä periaatteita ja tekniikoita voit luoda osallistavia ja saavutettavia verkkokokemuksia kaikille käyttäjille, heidän kyvyistään riippumatta. Muista, että saavutettavuus on jatkuva prosessi. Testaa verkkosivustoasi säännöllisesti ja kerää palautetta vammaisilta käyttäjiltä varmistaaksesi, että se pysyy saavutettavana ajan myötä. Priorisoimalla saavutettavuutta voit tehdä verkosta osallistavamman ja tasa-arvoisemman paikan kaikille.

Omaksumalla saavutettavuuden et ainoastaan noudata säännöksiä; rakennat parempaa verkkoa kaikille, laajennat tavoittavuuttasi ja vahvistat brändisi mainetta maailmanlaajuisesti.