A11y 101: Grunderna i universell utformning

Kristoffer Nordström
SpareBank 1 Utvikling
7 min readAug 27, 2018

De flesta har säkert någon gång hört talas om universell utformning och tänker kanske då på skärmläsare och blinda användare — antagligen för att det är svårast att relatera till hur någon utan syn använder webben. Men universell utformning handlar om mycket mer än så.

Tänk om detta var vad du såg när du surfade på webben

Jag går igenom grunderna i universell utformning — vad det är, vem det berör och hur man kan arbeta med det.

A11y – A-elvabokstäver-y – Accessibility

Men varför ska jag bry mig?

Att webben ska vara tillgänglig för alla krävs både av en FN-konvention och Norsk lag. Lagar och konventioner är något som vi gemensamt bestämt som en grundläggande baslinje för moral, medmänsklighet och civilisation.

Enligt Direktoratet for forvaltning og ikt (här efter Difi) så är det hela 17% av Norges arbetsföra befolkning och enligt WHO 15% av världens befolkning som har någon funktionsnedsättning. Alltså är det en stor del användare som direkt berörs.

Att ljud kompletterar visuella signaler vid övergångsställen hjälper alla — istället för att titta på signalen när man väntar kan man se på sin mobil eller medan du ser på signalen kan du lyssna på musik.

I den fysiska världen är vi vana vid hjälpmedel så som övergångsställen med både ljud- och ljussignaler, automatiska dörrar, ramper, enhandsgrepp på vattenkranar, textning av ljud på TV, med mera — det är en självklarhet att alla ska ha den personliga friheten och rättigheten att nyttja samhällsrummet och därtill hörande tjänster. Dessa hjälpmedel är till stor nytta för alla — med eller utan funktionsnedsättningar. Men på webben är oftast universell utformning eftersatt, kanske för att webben är ett ungt medium, men för att det ska bli bättre krävs att alla får upp ögonen, tar det på allvar och inser att det även här är en rättighet att ha frihet.

WCAG 2.0 är en baslinje inte en mållinje

Alla nya eller uppdaterade tjänster på webben ska som minimum följa WCAG 2.0 A eller AA, och alla gamla tjänster ska vara uppdaterade senast 2021. Difi har redan börjat genomföra tester, och till och med utdelat böter till de som inte följer kraven. Men varför enbart nöja sig med att följa kraven när man kan erbjuda användarna en ännu bättre upplevelse? WCAG 2.0 är en baslinje inte en mållinje.

Snart kommer även ett EU-direktiv med regler om universell utformning som troligen kommer pålägga medlemsländerna att följa WCAG 2.1.

Alla har ansvar vid universell utformning

Jag hade en gång en produktägare som sa att det bara var för utvecklarna att lägga in universell utformning i koden. Inget kan vara så fel! Det handlar inte enbart om teknisk tillrättaläggning eller design. Alla i ett utvecklingsteam berörs och har ansvar för universell utformning — produktägare, projektledare, designers, utvecklare, testare, men kanske inte drift.

Typer av funktionsnedsättningar

Det finns flera olika typer av funktionsnedsättningar. De kan kategoriseras till syn, hörsel, motorik och kognition.

Syn

Man kan ha nedsatt syn, vara blind eller vara färgblind — något som upp mot 8% av alla män är. Men att ha eller inte ha färgseende är inte bara svart-vitt 🥁 utan kan vara i varierande grad, precis som alla andra typer av hinder. Men alla kan även råka ut för temporära funktionsnedsättningar i form av en dålig skärm, bländande solljus eller trasiga glasögon.

Hörsel

Man kan ha nedsatt hörsel eller vara döv. Eller trasiga högtalare eller buller.

Motorik

Man kan ha dålig öga-hand koordination eller vara lam. Eller ha tjocka fingrar, liten skärm, bruten arm, trasig mus, dålig touchpad eller sitta på en skakig buss.

Kognition

Man kan ha dyslexi, adhd eller autism. Eller stress, kontorslandskap, barn, sömnbrist eller vara påverkad av alkohol.

Anpassningar

Syn

För att hjälpa till vid problem med synen bör man ha stöd för skärmläsare, tydlig kontrast, skalerbar text, tillräckligt textavstånd och tillåta zoom.

Hörsel

För hörsel tillhandahålla textalternativ eller andra visuella signaler till ljud.

Motorik

För motorik stora klickytor och stöd för tangentbordsnavigation.

Kognition

För att undvika kognitiva problem bör man ha ett lättförståeligt språk, semantisk kod och god interaktionsdesign.

Ett första steg i rätt riktning

Det är mycket att tänka på när det gäller universell utformning. Men här är några konkreta saker, mestadels tekniskt, att starta med.

Validera och automatisera

Se till att din html är giltig och validerar med W3C-validator. Något som är påkrävt av Difi och WCAG 2.0.¹ Det är en grundförutsättning för att hjälpmedel ska kunna tolka din applikation korrekt.

Kontrollera din applikation med en WCAG-validator: Axe (tillägg till Chrome eller Firefox), Google Accessibility Developer Tools (tillägg till Chrome) eller WAVE för att upptäcka uppenbara fel.

För att undgå onödiga slarvfel bör du automatisera så mycket som möjligt. Det finns ESLint-tillägg för både JSX och Vue. Med Pa11y eller Axe kan du köra tester via kommandolinjen, oberoende av val av frontend-ramverk, eller tillsammans med end-to-end tester.

Less is more

Använd html där det är möjligt istället för WAI-ARIA — exemplevis hellre en <button> än role=”button”. Ingen grund att uppfinna hjulet på nytt. Större andel hjälpmedel kan tolka innebörden av ren html och har standardiserat stöd för funktionalitet. I vissa specialfall kan det dock finnas undantag.

Tangentbordsnavigation

Underlätta tangentbordsnavigering genom tydliga stilar för focus- och hover-tillstånd, genom att ha en naturlig följdordning på innehåll frånskilt visuell presentation, behålla fokus vid dynamiska uppdateringar.²

Semantik

Att skriva semantisk kod som ger innehållet berikad mening är till hjälp för användaren. Tänk på att ha korrekta titel-heirarkier, de ska vara skrivna precis som i ett vanligt textdokument.³ Många användare navigerar mellan titlar och titel-nivåer. Slå av css eller använd ett hjälpmedel som presenterar titel-listor för att kontrollera.

Textinnehåll

Se till att allt innehållet är skrivet med ett lättförståeligt språk — detta är till stor nytta för samtliga användare!⁴

Att länkar, knappar, bilder och funktioner har beskrivande texter. Det är ganska vanligt förekommande med länkar av typen Les mer eller Klikk her, i en länk-lista som används för att navigera vidare genom applikationen ger dessa texter ingen mening och försvårar för användaren.⁵ Där texten inte ger mening för de utan syn kan man använda aria-label och för visuella element som inte ger någon mening till desamma kan man använda aria-hidden.

Att texter och textavstånd är tillräckligt så att de kan skalera och fortsatt vara läsliga.⁶

Att inte enbart färg används för att kommunicera och att kontrasten är tillräckligt god.⁷

Manuella tester

Skärmläsare är som webbläsare på tidigt 2000-tal

Skärmläsare är som webbläsare på tidigt 2000-tal — du kan inte bara följa webbstandarden och tro att det ska fungera. Samma skärmläsare kan dessutom fungera olika beroende på vilken webbläsare man använder. Därför bör du manuellt testa så många varianter som möjligt. Exempel på skärmläsare: VoiceOver (OS X / iOS), Narrator (Windows), NVDA (Windows), ChromeVox (tillägg till Chrome) och JAWS (Windows).

Vanliga fel

Att ha länkar utan href-attribut eller att använda andra typer av element som klickbara länkar med javascript gör att de inte kan nås med tangentbord och döljs från länk-listor. Detta hindrar användare från att använda dessa länkar.

Dubblerad information i exempelvis länkar och tillhörande ikoner gör att användare får samma information flera gånger och gör det svårare att förstå innehållet. Det är också hjälpsamt att lägga särskiljande information i början av texter eftersom användare med skärmläsare då enbart behöver lyssna på starten av texten.

Att dekorativa bilder och illustrationer inte är dolda för skärmläsare med aria-hidden=”true” och role=”presentation”.

Oigenomtänkt användande av aria-live kan dölja visst innehåll — eller i värsta fall dölja allt innehåll! Exemplevis genom aria-live=”assertive” på ett element som uppdateras hela tiden, såsom en klocka med sekunder.

För ivrigt användande av WAI-ARIA. Vad blir presenterat som label här:

<label id="label" for="id">Etikett</label>
<input id="id" type="text" aria-label="Etikett" aria-labelledby="label">

Vet du inte svaret bör du avstå. Vid användandet av både <header> och role=”banner” kan det plötsligt framställas som två olika headers. Men hur kan mindre vara bättre? Fler och motsägande besked gör tolkningen av applikationen svårare för hjälpmedel. Se den tidigare regeln om att använda html istället för WAI-ARIA där det är möjligt.

Avslutning

När du utformar din webbapplikation universellt gör du inte enbart det för att uppfylla lagar och regler. Du gör det främst för att tillhandahålla en så problemfri upplevelse som möjligt och tillfredsställa behov hos riktiga människor. Människor som är kunder och konsumenter, som kan välja en konkurrent som erbjuder bättre service.

Universell utformning på webben har även den, precis som i det fysiska rummet, stor nytta för alla användare. Alla har glädje av lättförståelig text, tydliga kontraster, skalerbar text, stora klickytor, med mera. Det underlättar allas användande och blir snart något vi alla tar för givet.

Lycka till! 😄

Nästa artikel – A11y 2.1: Fortsättning i universell utformning

--

--