# Luodaan saavutettavia verkkosivuja ![Kaikki saavutettavuudesta](../../../../translated_images/webdev101-a11y.8ef3025c858d897a403a1a42c0897c76e11b724d9a8a0c0578dd4316f7507622.fi.png) > Sketchnote: [Tomomi Imura](https://twitter.com/girlie_mac) ## Ennakkokysely [Ennakkokysely](https://ff-quizzes.netlify.app/web/) > Verkon voima on sen universaalisuudessa. Pääsy kaikille, riippumatta vammaisuudesta, on olennainen osa. > > \- Sir Timothy Berners-Lee, W3C:n johtaja ja World Wide Webin keksijä Tässä on jotain, mikä saattaa yllättää sinut: kun rakennat saavutettavia verkkosivustoja, et ainoastaan auta vammaisia ihmisiä—olet itse asiassa tekemässä verkosta paremman kaikille! Oletko koskaan huomannut jalkakäytävien kulmissa olevia ramppeja? Ne suunniteltiin alun perin pyörätuoleille, mutta nyt ne auttavat myös lastenvaunujen kanssa liikkuvia, tavarantoimittajia, matkustajia matkalaukkujen kanssa ja pyöräilijöitä. Juuri näin saavutettava verkkosuunnittelu toimii—ratkaisut, jotka auttavat yhtä ryhmää, hyödyttävät usein kaikkia. Aika siistiä, eikö? Tässä oppitunnissa tutkimme, kuinka luoda verkkosivustoja, jotka toimivat kaikille, riippumatta siitä, miten he selaavat verkkoa. Opit käytännön tekniikoita, jotka ovat jo sisäänrakennettu verkkostandardeihin, pääset kokeilemaan testityökaluja ja näet, kuinka saavutettavuus tekee sivustoistasi käyttäjäystävällisempiä kaikille. Oppitunnin lopussa sinulla on varmuus tehdä saavutettavuudesta luonnollinen osa kehitysprosessiasi. Valmis tutkimaan, kuinka harkitut suunnitteluratkaisut voivat avata verkon miljardeille käyttäjille? Sukelletaanpa! > Voit käydä tämän oppitunnin [Microsoft Learnissa](https://docs.microsoft.com/learn/modules/web-development-101/accessibility/?WT.mc_id=academic-77807-sagibbon)! ## Apuvälineiden ymmärtäminen Ennen kuin siirrymme koodaukseen, otetaan hetki ymmärtääksemme, miten eri kykyiset ihmiset todella kokevat verkon. Tämä ei ole pelkkää teoriaa—näiden todellisten navigointitapojen ymmärtäminen tekee sinusta paljon paremman kehittäjän! Apuvälineet ovat hämmästyttäviä työkaluja, jotka auttavat vammaisia ihmisiä vuorovaikuttamaan verkkosivustojen kanssa tavoilla, jotka saattavat yllättää sinut. Kun opit, miten nämä teknologiat toimivat, saavutettavien verkkokokemusten luominen muuttuu paljon intuitiivisemmaksi. Se on kuin oppisi näkemään koodisi jonkun toisen silmin. ### Ruudunlukijat [Ruudunlukijat](https://en.wikipedia.org/wiki/Screen_reader) ovat melko kehittyneitä teknologioita, jotka muuntavat digitaalisen tekstin puheeksi tai pistekirjoitukseksi. Vaikka niitä käytetään pääasiassa näkövammaisten ihmisten toimesta, ne ovat myös erittäin hyödyllisiä oppimisvaikeuksista, kuten lukihäiriöstä, kärsiville käyttäjille. Ajattelen ruudunlukijaa kuin todella älykästä kertojaa, joka lukee kirjaa sinulle. Se lukee sisällön ääneen loogisessa järjestyksessä, ilmoittaa interaktiiviset elementit kuten "painike" tai "linkki" ja tarjoaa pikanäppäimiä sivulla liikkumiseen. Mutta tässä on juttu—ruudunlukijat voivat tehdä taikojaan vain, jos rakennamme verkkosivustoja asianmukaisella rakenteella ja merkityksellisellä sisällöllä. Tässä sinä astut kuvaan kehittäjänä! **Suosittuja ruudunlukijoita eri alustoilla:** - **Windows**: [NVDA](https://www.nvaccess.org/about-nvda/) (ilmainen ja suosituin), [JAWS](https://webaim.org/articles/jaws/), [Narrator](https://support.microsoft.com/windows/complete-guide-to-narrator-e4397a0d-ef4f-b386-d8ae-c172f109bdb1/?WT.mc_id=academic-77807-sagibbon) (sisäänrakennettu) - **macOS/iOS**: [VoiceOver](https://support.apple.com/guide/voiceover/welcome/10) (sisäänrakennettu ja erittäin kyvykäs) - **Android**: [TalkBack](https://support.google.com/accessibility/android/answer/6283677) (sisäänrakennettu) - **Linux**: [Orca](https://wiki.gnome.org/Projects/Orca) (ilmainen ja avoimen lähdekoodin) **Kuinka ruudunlukijat navigoivat verkkosisältöä:** Ruudunlukijat tarjoavat useita navigointimenetelmiä, jotka tekevät selaamisesta tehokasta kokeneille käyttäjille: - **Järjestelmällinen lukeminen**: Lukee sisällön ylhäältä alas, kuten kirjaa seuraten - **Maamerkkien navigointi**: Hyppää sivun osioiden välillä (otsikko, navigointi, pääsisältö, alatunniste) - **Otsikon navigointi**: Siirtyy otsikoiden välillä ymmärtääkseen sivun rakenteen - **Linkkilistat**: Luo lista kaikista linkeistä nopeaa pääsyä varten - **Lomakekentät**: Navigoi suoraan syöttökenttien ja painikkeiden välillä > 💡 **Tämä yllätti minut**: 68 % ruudunlukijoiden käyttäjistä navigoi ensisijaisesti otsikoiden avulla ([WebAIM-kysely](https://webaim.org/projects/screenreadersurvey9/#finding)). Tämä tarkoittaa, että otsikkorakenteesi on kuin kartta käyttäjille—kun teet sen oikein, autat ihmisiä löytämään sisältösi nopeammin! ### Testausprosessin rakentaminen Hyviä uutisia—tehokas saavutettavuustestaus ei tarvitse olla ylivoimaista! Kannattaa yhdistää automaattiset työkalut (ne ovat loistavia ilmeisten ongelmien havaitsemisessa) ja käytännön testaus. Tässä on järjestelmällinen lähestymistapa, joka auttaa havaitsemaan suurimman osan ongelmista ilman, että koko päivä menee hukkaan: **Välttämätön manuaalinen testausprosessi:** ```mermaid graph TD A[Start Testing] --> B{Keyboard Navigation} B --> C[Tab through all interactive elements] C --> D{Screen Reader Testing} D --> E[Test with NVDA/VoiceOver] E --> F{Zoom Testing} F --> G[Zoom to 200% and test functionality] G --> H{Color/Contrast Check} H --> I[Verify all text meets contrast ratios] I --> J{Focus Management} J --> K[Ensure focus indicators are visible] K --> L[Testing Complete] ``` **Vaiheittainen testauslista:** 1. **Näppäimistön navigointi**: Käytä vain Tab, Shift+Tab, Enter, Space ja nuolinäppäimiä 2. **Ruudunlukijatestaus**: Ota NVDA, VoiceOver tai Narrator käyttöön ja navigoi silmät kiinni 3. **Zoomaustestaus**: Testaa 200 % ja 400 % zoomaustasoilla 4. **Värikontrastin tarkistus**: Tarkista kaikki tekstit ja käyttöliittymäkomponentit 5. **Fokusindikaattorin testaus**: Varmista, että kaikki interaktiiviset elementit ovat näkyvissä ✅ **Aloita Lighthousella**: Avaa selaimesi kehitystyökalut, suorita Lighthouse-saavutettavuusauditointi ja käytä tuloksia manuaalisen testauksen painopistealueiden ohjaamiseen. ### Zoomaus- ja suurennustyökalut Tiedätkö, kuinka joskus zoomaat puhelimellasi, kun teksti on liian pientä, tai siristät silmiäsi kannettavan näytön edessä kirkkaassa auringonvalossa? Monet käyttäjät luottavat suurennustyökaluihin tehdäkseen sisällöstä luettavaa joka päivä. Tämä koskee heikkonäköisiä, vanhuksia ja kaikkia, jotka ovat joskus yrittäneet lukea verkkosivua ulkona. Modernit zoomausteknologiat ovat kehittyneet pelkästä suurentamisesta. Ymmärtämällä, miten nämä työkalut toimivat, voit luoda responsiivisia suunnitelmia, jotka pysyvät toimivina ja houkuttelevina kaikilla suurennustasoilla. **Modernit selainten zoomausominaisuudet:** - **Sivun zoomaus**: Skaalaa kaikki sisältö suhteellisesti (teksti, kuvat, asettelu) - tämä on suositeltu menetelmä - **Vain tekstin zoomaus**: Suurentaa fonttikokoa säilyttäen alkuperäisen asettelun - **Pinch-to-zoom**: Mobiilieleiden tuki tilapäiseen suurennukseen - **Selaintuki**: Kaikki modernit selaimet tukevat zoomausta jopa 500 % ilman toiminnallisuuden rikkoutumista **Erikoistuneet suurennusohjelmistot:** - **Windows**: [Magnifier](https://support.microsoft.com/windows/use-magnifier-to-make-things-on-the-screen-easier-to-see-414948ba-8b1c-d3bd-8615-0e5e32204198) (sisäänrakennettu), [ZoomText](https://www.freedomscientific.com/training/zoomtext/getting-started/) - **macOS/iOS**: [Zoom](https://www.apple.com/accessibility/mac/vision/) (sisäänrakennettu edistyneillä ominaisuuksilla) > ⚠️ **Suunnitteluharkinta**: WCAG vaatii, että sisältö pysyy toimivana, kun sitä zoomataan 200 %. Tällä tasolla vaakasuuntainen vieritys tulisi olla minimaalista, ja kaikki interaktiiviset elementit tulisi olla saavutettavissa. ✅ **Testaa responsiivinen suunnittelusi**: Zoomaa selaimesi 200 % ja 400 %. Mukautuuko asettelusi sulavasti? Voitko edelleen käyttää kaikkia toimintoja ilman liiallista vieritystä? ## Modernit saavutettavuustestityökalut Nyt kun ymmärrät, miten ihmiset navigoivat verkossa apuvälineiden avulla, tutkitaan työkaluja, jotka auttavat sinua rakentamaan ja testaamaan saavutettavia verkkosivustoja. Ajattele asiaa näin: automaattiset työkalut ovat loistavia ilmeisten ongelmien havaitsemisessa (kuten puuttuva alt-teksti), kun taas käytännön testaus auttaa varmistamaan, että sivustosi tuntuu hyvältä käyttää todellisessa maailmassa. Yhdessä ne antavat sinulle varmuuden siitä, että sivustosi toimivat kaikille. ### Värikontrastin testaus Hyviä uutisia: värikontrasti on yksi yleisimmistä saavutettavuusongelmista, mutta se on myös yksi helpoimmista korjata. Hyvä kontrasti hyödyttää kaikkia—näkövammaisista käyttäjistä ihmisiin, jotka yrittävät lukea puhelimiaan rannalla. **WCAG-kontrastivaatimukset:** | Tekstityyppi | WCAG AA (Minimi) | WCAG AAA (Parannettu) | |--------------|------------------|-----------------------| | **Normaali teksti** (alle 18pt) | 4.5:1 kontrastisuhde | 7:1 kontrastisuhde | | **Suuri teksti** (18pt+ tai 14pt+ lihavoitu) | 3:1 kontrastisuhde | 4.5:1 kontrastisuhde | | **UI-komponentit** (painikkeet, lomakerajat) | 3:1 kontrastisuhde | 3:1 kontrastisuhde | **Välttämättömät testityökalut:** - [Colour Contrast Analyser](https://www.tpgi.com/color-contrast-checker/) - Työpöytäsovellus värinvalitsimella - [WebAIM Contrast Checker](https://webaim.org/resources/contrastchecker/) - Verkkopohjainen välittömällä palautteella - [Stark](https://www.getstark.co/) - Suunnittelutyökalun lisäosa Figmaan, Sketchiin, Adobe XD:hen - [Accessible Colors](https://accessible-colors.com/) - Löydä saavutettavia väripaletteja ✅ **Luo parempia väripaletteja**: Aloita brändiväreistäsi ja käytä kontrastitarkistimia luodaksesi saavutettavia variaatioita. Dokumentoi nämä suunnittelujärjestelmäsi saavutettavina värikoodeina. ### Kattava saavutettavuusauditointi Tehokkain saavutettavuustestaus yhdistää useita lähestymistapoja. Mikään yksittäinen työkalu ei havaitse kaikkea, joten testirutiinin rakentaminen eri menetelmillä varmistaa kattavan tarkastuksen. **Selaimeen perustuva testaus (sisäänrakennettu kehitystyökaluihin):** - **Chrome/Edge**: Lighthouse-saavutettavuusauditointi + Saavutettavuuspaneeli - **Firefox**: Saavutettavuusinspektori yksityiskohtaisella puunäkymällä - **Safari**: Auditointivälilehti Web Inspectorissa VoiceOver-simulaatiolla **Ammattilaistason testauslaajennukset:** - [axe DevTools](https://www.deque.com/axe/devtools/) - Teollisuusstandardin mukainen automaattinen testaus - [WAVE](https://wave.webaim.org/extension/) - Visuaalinen palaute virheiden korostuksella - [Accessibility Insights](https://accessibilityinsights.io/) - Microsoftin kattava testauspaketti **Komentorivi ja CI/CD-integraatio:** - [axe-core](https://github.com/dequelabs/axe-core) - JavaScript-kirjasto automaattiseen testaukseen - [Pa11y](https://pa11y.org/) - Komentorivipohjainen saavutettavuustestityökalu - [Lighthouse CI](https://github.com/GoogleChrome/lighthouse-ci) - Automatisoitu saavutettavuuspisteytys > 🎯 **Testaustavoite**: Pyri Lighthouse-saavutettavuuspisteisiin 95+ lähtötasona. Muista, että automaattiset työkalut havaitsevat vain noin 30-40 % saavutettavuusongelmista—manuaalinen testaus on edelleen välttämätöntä! ## Saavutettavuuden rakentaminen alusta alkaen Saavutettavuuden avain menestykseen on sen sisällyttäminen perustaan alusta alkaen. Tiedän, että voi olla houkuttelevaa ajatella "lisään saavutettavuuden myöhemmin", mutta se on kuin yrittäisi lisätä ramppia taloon sen rakentamisen jälkeen. Mahdollista? Kyllä. Helppoa? Ei todellakaan. Ajattele saavutettavuutta kuin talon suunnittelua—on paljon helpompaa sisällyttää pyörätuolisaavutettavuus alkuperäisiin arkkitehtisuunnitelmiin kuin muokata kaikkea myöhemmin. ### POUR-periaatteet: Saavutettavuuden perusta Web Content Accessibility Guidelines (WCAG) perustuvat neljään keskeiseen periaatteeseen, jotka muodostavat POUR. Älä huoli—nämä eivät ole kuivaa akateemista teoriaa! Ne ovat käytännöllisiä ohjeita sisällön luomiseen, joka toimii kaikille. Kun opit POUR-periaatteet, saavutettavuuspäätösten tekeminen muuttuu paljon intuitiivisemmaksi. Se on kuin henkinen tarkistuslista, joka ohjaa suunnittelupäätöksiäsi. Puretaanpa ne: **🔍 Havainnollinen**: Tiedon tulee olla esitettävissä tavoilla, jotka käyttäjät voivat havaita käytettävissä olevilla aisteillaan - Tarjoa tekstivaihtoehtoja ei-tekstisisällölle (kuvat, videot, äänet) - Varmista riittävä värikontrasti kaikelle tekstille ja käyttöliittymäkomponenteille - Tarjoa tekstitykset ja transkriptiot multimedia-sisällölle - Suunnittele sisältö, joka pysyy toimivana, kun sitä suurennetaan jopa 200 % - Käytä useita aistillisia ominaisuuksia (ei vain väriä) tiedon välittämiseen **🎮 Käytettävä**: Kaikkien käyttöliittymäkomponenttien tulee olla käytettävissä saatavilla olevilla syöttötavoilla - Tee kaikki toiminnot saavutettaviksi näppäimistön navigoinnin avulla - Anna käyttäjille riittävästi aikaa lukea ja olla vuorovaikutuksessa sisällön kanssa - Vältä sisältöä, joka aiheuttaa kohtauksia tai tasapainohäiriöitä - Auta käyttäjiä navigoimaan tehokkaasti selkeällä rakenteella ja maamerkeillä - Varmista, että interaktiivisilla elementeillä on riittävät kohdekoot (vähintään 44px) **📖 Ymmärrettävä**: Tiedon ja käyttöliittymän toiminnan tulee olla selkeää ja ymmärrettävää - Käytä selkeää, yksinkertaista kieltä, joka sopii kohdeyleisöllesi - Varmista, että sisältö näkyy ja toimii ennakoitavalla, johdonmukaisella tavalla - Tarjoa selkeät ohjeet ja virheilmoitukset käyttäjän syötteille - Auta käyttä Väri on tehokas viestinnän väline, mutta sen ei koskaan pitäisi olla ainoa tapa välittää tärkeää tietoa. Suunnittelu, joka menee värin tuolle puolen, luo kestävämpiä ja inklusiivisempia kokemuksia, jotka toimivat monenlaisissa tilanteissa. **Suunnittele värinäköeroja huomioiden:** Noin 8 % miehistä ja 0,5 % naisista kärsii jonkinlaisesta värinäköerosta (usein kutsutaan värisokeudeksi). Yleisimmät tyypit ovat: - **Deuteranopia**: Vaikeus erottaa punaista ja vihreää - **Protanopia**: Punainen näyttää himmeämmältä - **Tritanopia**: Vaikeus sinisen ja keltaisen erottamisessa (harvinainen) **Inklusiiviset väristrategiat:** ```css /* ❌ Bad: Using only color to indicate status */ .error { color: red; } .success { color: green; } /* ✅ Good: Color plus icons and context */ .error { color: #d32f2f; border-left: 4px solid #d32f2f; } .error::before { content: "⚠️"; margin-right: 8px; } .success { color: #2e7d32; border-left: 4px solid #2e7d32; } .success::before { content: "✅"; margin-right: 8px; } ``` **Peruskontrastivaatimusten yli:** - Testaa värivalintasi värisokeussimulaattoreilla - Käytä kuvioita, tekstuureja tai muotoja värikoodauksen rinnalla - Varmista, että interaktiiviset tilat ovat erottuvia ilman väriä - Mieti, miltä suunnittelusi näyttää korkean kontrastin tilassa ✅ **Testaa värien saavutettavuus**: Käytä työkaluja, kuten [Coblis](https://www.color-blindness.com/coblis-color-blindness-simulator/), nähdäksesi, miltä sivustosi näyttää käyttäjille, joilla on erilaisia värinäköeroja. ### Kohdistusindikaattorit ja vuorovaikutussuunnittelu Kohdistusindikaattorit ovat digitaalinen vastine kursorille—ne osoittavat näppäimistön käyttäjille, missä he ovat sivulla. Hyvin suunnitellut kohdistusindikaattorit parantavat kaikkien käyttäjien kokemusta tekemällä vuorovaikutuksesta selkeää ja ennakoitavaa. **Modernit kohdistusindikaattorien parhaat käytännöt:** ```css /* Enhanced focus styles that work across browsers */ button:focus-visible { outline: 2px solid #0066cc; outline-offset: 2px; box-shadow: 0 0 0 4px rgba(0, 102, 204, 0.25); } /* Remove focus outline for mouse users, preserve for keyboard users */ button:focus:not(:focus-visible) { outline: none; } /* Focus-within for complex components */ .card:focus-within { box-shadow: 0 0 0 3px rgba(74, 144, 164, 0.5); border-color: #4A90A4; } /* Ensure focus indicators meet contrast requirements */ .custom-focus:focus-visible { outline: 3px solid #ffffff; outline-offset: 2px; box-shadow: 0 0 0 6px #000000; } ``` **Kohdistusindikaattorien vaatimukset:** - **Näkyvyys**: Vähintään 3:1 kontrastisuhde ympäröiviin elementteihin - **Leveys**: Vähintään 2px paksuus koko elementin ympärillä - **Pysyvyys**: Pitäisi pysyä näkyvissä, kunnes kohdistus siirtyy muualle - **Erottuvuus**: Pitäisi visuaalisesti erottua muista käyttöliittymän tiloista > 💡 **Suunnitteluvinkki**: Hyvät kohdistusindikaattorit käyttävät usein yhdistelmää reunaviivaa, varjostusta ja värimuutoksia varmistaakseen näkyvyyden eri taustoilla ja konteksteissa. ✅ **Tarkista kohdistusindikaattorit**: Käy läpi verkkosivustosi välilehtien avulla ja tarkista, mitkä elementit sisältävät selkeät kohdistusindikaattorit. Ovatko jotkin vaikeasti havaittavissa tai puuttuvat kokonaan? ### Semanttinen HTML: Saavutettavuuden perusta Semanttinen HTML on kuin avustavien teknologioiden GPS-järjestelmä verkkosivustollesi. Kun käytät oikeita HTML-elementtejä niiden tarkoituksenmukaisella tavalla, tarjoat näytönlukijoille, näppäimistöille ja muille työkaluille yksityiskohtaisen kartan, joka auttaa käyttäjiä navigoimaan tehokkaasti. Tässä on vertaus, joka todella avasi silmäni: semanttinen HTML on kuin hyvin järjestetty kirjasto, jossa on selkeät kategoriat ja hyödylliset opasteet, verrattuna varastoon, jossa kirjat ovat satunnaisesti levällään. Molemmissa paikoissa on samat kirjat, mutta kummasta haluaisit etsiä jotain? Juuri niin! **Saavutettavan sivurakenteen rakennuspalikat:** ```html

Your Site Name

Article Title

Published on

First Section

Content that relates to this section...

Second Section

More related content...

``` **Miksi semanttinen HTML muuttaa saavutettavuutta:** | Semanttinen elementti | Tarkoitus | Näytönlukijan hyöty | |-----------------------|-----------|---------------------| | `
` | Sivun tai osion otsikko | "Banneri-maamerkki" - nopea navigointi yläosaan | | `