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:
- Eettiset näkökohdat: Kaikilla on oikeus yhdenvertaiseen pääsyyn tietoon ja palveluihin verkossa. Vammaisten henkilöiden jättäminen digitaalisen maailman ulkopuolelle on syrjivää.
- Lakisääteiset vaatimukset: Monissa maissa ja alueilla on lakeja ja säännöksiä, jotka edellyttävät verkkosivujen saavutettavuutta, kuten Americans with Disabilities Act (ADA) Yhdysvalloissa, Accessibility for Ontarians with Disabilities Act (AODA) Kanadassa ja Euroopan esteettömyysdirektiivi (EAA) Euroopan unionissa. Noudattamatta jättäminen voi johtaa oikeustoimiin. Esimerkiksi joillakin lainkäyttöalueilla saavuttamattomat verkkosivustot voivat joutua oikeusjuttujen kohteeksi.
- Parempi käyttäjäkokemus: Saavutettavuuden parhaat käytännöt ovat usein päällekkäisiä yleisten käytettävyysperiaatteiden kanssa. Sivuston tekeminen saavutettavaksi voi parantaa kaikkien käyttäjien käyttökokemusta, vammasta riippumatta. Esimerkiksi selkeiden selitteiden tarjoaminen lomakekentille hyödyttää käyttäjiä, joilla on kognitiivisia haasteita, sekä käyttäjiä, joilla on hidas internetyhteys ja jotka haluavat nopeasti ymmärtää kunkin kentän tarkoituksen.
- Laajempi yleisö: Noin 15 % maailman väestöstä on vammaisia. Tekemällä verkkosivustostasi saavutettavan avaat sen merkittävästi suuremmalle yleisölle. Tämä voi tarkoittaa lisääntynyttä liiketoimintaa, sitoutumista ja vaikuttavuutta. WHO arvioi, että yli miljardi ihmistä elää jonkinlaisen vamman kanssa.
- SEO-hyödyt: Hakukoneet, kuten Google, suosivat verkkosivustoja, jotka ovat hyvin jäsenneltyjä, semanttisia ja käyttäjäystävällisiä. Monet saavutettavuuden parhaat käytännöt, kuten oikeiden otsikkorakenteiden käyttö ja vaihtoehtoisten tekstien tarjoaminen kuville, voivat myös parantaa verkkosivustosi hakukoneoptimointia (SEO).
- Parempi brändimaine: Sitoutumisen osoittaminen saavutettavuuteen voi parantaa brändisi mainetta ja rakentaa luottamusta asiakkaiden kanssa. Kuluttajat suosivat yhä enemmän brändejä, jotka ovat yhteiskuntavastuullisia ja osallistavia.
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:
- Havaittava: Informaation ja käyttöliittymän komponenttien on oltava esitettävissä käyttäjille tavoilla, jotka he voivat havaita. Tämä tarkoittaa tekstivastineiden tarjoamista ei-tekstuaaliselle sisällölle, tekstityksiä videoille ja riittävän värikontrastin varmistamista.
- Hallittava: Käyttöliittymän komponenttien ja navigoinnin on oltava hallittavissa. Tähän kuuluu sen varmistaminen, että kaikki toiminnot ovat käytettävissä näppäimistöllä, riittävän ajan tarjoaminen käyttäjille sisällön lukemiseen ja käyttämiseen sekä sellaista sisältöä välttäminen, joka voisi aiheuttaa kohtauksia.
- Ymmärrettävä: Informaation ja käyttöliittymän toiminnan on oltava ymmärrettävää. Tämä tarkoittaa selkeän ja ytimekkään kielen käyttöä, ohjeiden ja palautteen antamista sekä sen varmistamista, että verkkosivusto on ennustettava ja johdonmukainen.
- Toimintavarma: Sisällön on oltava riittävän toimintavarmaa, jotta se voidaan tulkita luotettavasti monenlaisilla käyttäjäohjelmilla, mukaan lukien avustavilla teknologioilla. Tähän kuuluu validin HTML:n ja ARIA-attribuuttien käyttö sekä sen varmistaminen, että sisältö on yhteensopiva eri selainten ja laitteiden kanssa.
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:
<header>
: Edustaa dokumentin tai osion ylätunnistetta.<nav>
: Edustaa navigointilinkkien osiota.<main>
: Edustaa dokumentin pääsisältöä.<article>
: Edustaa itsenäistä kokonaisuutta dokumentissa, sivulla, sovelluksessa tai sivustolla.<aside>
: Edustaa sisältöä, joka liittyy vain välillisesti dokumentin pääsisältöön.<footer>
: Edustaa dokumentin tai osion alatunnistetta.<section>
: Edustaa temaattista sisällön ryhmittelyä.
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:
aria-label
: Antaa tekstiselitteen elementille.aria-describedby
: Yhdistää elementin kuvaukseen.aria-labelledby
: Yhdistää elementin selitteeseen.aria-hidden
: Piilottaa elementin avustavilta teknologioilta.aria-live
: Ilmaisee, että elementin sisältö päivittyy dynaamisesti.role
: Määrittelee elementin roolin (esim. painike, valintaruutu, dialogi).aria-expanded
: Ilmaisee, onko elementti laajennettu vai tiivistetty.aria-selected
: Ilmaisee, onko elementti valittu.
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ä:
- Sääntö 1: Jos voit käyttää natiivia HTML-elementtiä tai attribuuttia, jossa vaadittu semantiikka ja toiminnallisuus on jo sisäänrakennettuna, sen sijaan että muuttaisit elementin käyttötarkoitusta ja lisäisit ARIA-roolin, -tilan tai -ominaisuuden sen saavutettavaksi tekemiseksi, tee niin.
- Sääntö 2: Älä muuta natiivin HTML:n semantiikkaa, ellet todella joudu.
- Sääntö 3: Kaikkien interaktiivisten ARIA-kontrollien on oltava käytettävissä näppäimistöllä.
- Sääntö 4: Älä käytä
role="presentation"
- taiaria-hidden="true"
-attribuuttia kohdistettavissa elementeissä. - Sääntö 5: Kaikilla elementeillä, joilla on ARIA-rooli, on oltava kaikki vaaditut attribuutit.
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.
- Automaattiset saavutettavuuden tarkistustyökalut: Käytä automaattisia saavutettavuuden tarkistustyökaluja skannataksesi verkkosivustosi yleisten saavutettavuusvirheiden varalta. Suosittuja työkaluja ovat muun muassa WAVE, A Checker ja Google Lighthouse. Nämä työkalut voivat tunnistaa ongelmia, kuten puuttuvat alt-tekstit, alhaisen värikontrastin ja virheelliset otsikkorakenteet. Automaattiset työkalut voivat kuitenkin havaita vain osan saavutettavuusongelmista.
- Manuaalinen testaus: Testaa verkkosivustoasi manuaalisesti näppäimistöllä ja ruudunlukijalla. Tämä auttaa sinua tunnistamaan ongelmia, joita automaattiset työkalut eivät pysty havaitsemaan, kuten kohdistusjärjestyksen ongelmat ja epäselvä navigointi. Suosittuja ruudunlukijoita ovat NVDA (ilmainen ja avoimen lähdekoodin), JAWS (kaupallinen) ja VoiceOver (sisäänrakennettu macOS:ään ja iOS:ään).
- Käyttäjätestaus: Ota vammaisia käyttäjiä mukaan testausprosessiisi. Hanki palautetta käyttäjiltä, joilla on erilaisia vammoja, varmistaaksesi, että verkkosivustosi on kaikkien saavutettavissa. Käyttäjätestaus voi tarjota arvokkaita näkemyksiä verkkosivustosi todellisesta saavutettavuudesta.
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:
- Mobiilisovellukset: Sovella vastaavia saavutettavuusperiaatteita kehittäessäsi mobiilisovelluksia iOS:lle ja Androidille. Käytä käyttöjärjestelmien tarjoamia natiiveja saavutettavuusominaisuuksia.
- Työpöytäsovellukset: Varmista, että työpöytäsovellukset ovat navigoitavissa näppäimistöllä, tarjoavat riittävän kontrastin ja ovat yhteensopivia ruudunlukijoiden kanssa.
- Dokumentit (PDF, Word, jne.): Luo saavutettavia dokumentteja käyttämällä asianmukaisia otsikkorakenteita, alt-tekstejä kuville ja varmistamalla riittävä kontrasti.
- Sähköpostit: Suunnittele saavutettavia sähköposteja käyttämällä semanttista HTML:ää, tarjoamalla alt-tekstejä kuville ja käyttämällä selkeää ja ytimekästä kieltä.
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.