Hopp til innhold

Universell utforming

et nettsteds egnethet for folk med funksjonsnedsettelse

Hva det er

Universell utforming av et nettsted, en app eller et verktøy handler om hvor godt det fungerer for folk med funksjonsnedsettelser. W3Cs Web Accessibility Initiative (WAI) definerer det ut fra hva folk skal kunne gjøre: oppfatte, forstå, navigere og samhandle med nettet, og bidra til det selv. Det siste verbet veier tungt. Et nettsted der en blind besøkende kan lese hver eneste artikkel, men verken kan skrive en kommentar, laste opp en fil eller fullføre en registrering, oppfyller halve definisjonen. Mange sier også digital tilgjengelighet, på engelsk accessibility, og forkortelsen a11y teller de elleve bokstavene mellom a og y.

Omfanget er alle funksjonsnedsettelser som påvirker tilgangen til nettet. WAI nevner hørsel, kognisjon, nevrologi, motorikk, tale og syn, og hver av dem har sine egne barrierer: video uten teksting, instruksjoner som krever at du husker mye, bevegelse som utløser symptomer, kontroller som trenger en stødig hånd og en mus, stemmestyring som forventer flytende tale, og tekst som bare fungerer i én størrelse og med én kontrast.

Under den synlige siden bygger nettleseren en egen struktur for hjelpemidler. ARIA-spesifikasjonen kaller den tilgjengelighetstreet: et tre av tilgjengelige objekter der hver node står for et element i grensesnittet, f.eks. en trykknapp eller en avkrysningsboks, og eksponeres gjennom plattformens tilgjengelighets-API. Skjermlesere, stemmestyring, brytere og leselister for punktskrift arbeider ut fra dette treet, ikke ut fra piksler. Hver node har et navn, en rolle og en tilstand, og WCAG-kriteriet 4.1.2 Navn, rolle, verdi krever at programvare kan lese dem ut for hver komponent i grensesnittet. Standarden påpeker at innebygde HTML-kontroller allerede oppfyller 4.1.2 når de brukes slik spesifikasjonen sier. En div med en klikkhandler havner i treet som vanlig tekst, uten rolle og uten plass i tastaturrekkefølgen.

WAI understreker at universell utforming avhenger av at flere deler spiller sammen: webteknologiene, nettleserne, publiseringsverktøyene og selve nettstedene. Den som eier et nettsted, styrer den siste av disse, og det er der WCAG beskriver i testbare formuleringer hva innholdet må gjøre.

Hvorfor det er viktig

Nettet bærer utdanning, arbeid, offentlige tjenester, handel og helsetjenester, og WAI viser til at FNs konvensjon om rettighetene til mennesker med nedsatt funksjonsevne definerer tilgang til informasjons- og kommunikasjonsteknologi, nettet inkludert, som en grunnleggende menneskerettighet. Universell utforming er også lovpålagt i mange sammenhenger, og innkjøpere gjør det om til en linje i kontrakten som nevner WCAG 2.2 nivå AA. Den linjen avgjør hva leverandøren må bygge og dokumentere. I Norge sier Uutilsynet at ikt-løsninger skal være universelt utformet, at det gjelder nettløsninger, apper og automater, og at både private og offentlige virksomheter må følge regelverket.

Det samme arbeidet hjelper folk som aldri ville kalt seg funksjonshemmet. WAI nevner selv folk på mobil, klokke og TV med små skjermer og andre måter å styre på, eldre hvis evner endrer seg med alderen, en som har brukket armen eller mistet brillene, en som står i sterkt sollys eller et sted der lyd ikke kan spilles av, og alle med treg eller dyr forbindelse. Teksting hjelper på et stille tog, og sterk kontrast hjelper på en telefon midt på dagen.

Tidspunktet bestemmer prisen. WAI kaller det mest effektivt å bygge inn universell utforming helt fra starten av et prosjekt, så arbeidet slipper å gjøres om. Å velge en innebygd knapp koster ingenting første dag. Å bytte ut en hjemmesnekret knapp etter lansering betyr å rette komponenten og deretter teste på nytt hver side som brukte den, på hvert språk og i hvert tema nettstedet leverer.

Evalueringen følger samme logikk. Verktøy hjelper, men WAI sier rett ut at intet verktøy alene kan avgjøre om et nettsted oppfyller retningslinjene, og at det kreves evaluering av mennesker som kan faget. En regelmotor leser hva oppmerkingen sier. En person med tastatur og skjermleser finner ut hva siden gjør.

Slik ser det ut i praksis

Et nettsted besto de automatiske reglene for universell utforming og hadde likevel elleve feil som nettleseren meldte som friske, hver av dem en egenskap ved hvordan siden ble gjengitt, ikke ved hva oppmerkingen sa. Åtte lenker i bunnteksten ble værende i tabulatorrekkefølgen bak en egenskap som fjerner pekerinteraksjon og ingenting annet, så et tastatur kunne lande på lenker som var usynlige på skjermen. To av feilene satt i selve vaktene. Hvert vindu layoutkontrollen åpnet, var ni hundre piksler høyt, så på en telefon i liggende format på 852 ganger 393 sto to elementer sju piksler fra hverandre uten at noen så etter. Regelmotoren hadde kjørt sytti av sine hundre og fem regler. Fire regler kom ut av arbeidet, blant dem at en vakt som tester én akse, forsvarer én akse, og at synlighet bevises i piksler og ikke i dokumentet. Da layoutkontrollen ble åpnet på nytt, nå på riktig måte, feilet den hundre og tjueåtte ganger på tvers av tre språk.

Siden om å gi alle sytten ikonkontrollene et navn flytter blikket fra et nettsted til en applikasjon bygd med SwiftUI. Et systemsymbol uten tilgjengelighetsetikett leses opp med sitt interne navn, så sendeknappen presenterte seg som «arrow up circle, button», og alle de andre rene ikonkontrollene gjorde det samme på sin måte: sytten i alt beskrev grafikken sin i stedet for funksjonen. Nå har hver av dem en etikett som navngir handlingen, og der betydningen avhenger av tilstand, følger etiketten tilstanden. En linter krever en etikett innenfor åtte linjer fra hver konstruksjon som lager en ren ikonkontroll. Regelen er bevisst grov og valgt ved måling, og en attende kontroll kan ikke legges til uten etikett. Siden oppgir også grensen for regelen: den beviser at en etikett finnes i nærheten, og om etiketten er riktig, krever fortsatt at noen lytter.

Siden om å være klar for AI-agenter legger til en nyere leser. Mange agenter som styrer en nettleser, leser en side slik en skjermleser gjør, gjennom tilgjengelighetstreet. Ekte knapper, nettskjemaer med etiketter, overskrifter i riktig rekkefølge og landemerker gjør et nettsted brukbart uten mus, og det er det samme arbeidet som lar en agent finne et skjema og fylle det ut.

Hvor det går galt

En egen nedtrekksmeny fungerer med mus og stenger alle andre ute. En div med en klikkhandler har ingen rolle, tar ikke tastaturfokus og melder ingen åpen eller lukket tilstand, så en skjermleser leser opp ren tekst og Tab-tasten hopper forbi. Begynn med det innebygde elementet, select, button eller details, som har rolle, fokus og tilstand med seg. Trenger designet virkelig en egen komponent, følger du mønsteret i ARIA Authoring Practices Guide og tester den med tastatur og skjermleser.

Alternativteksten beskriver bildet, mens leseren trengte å vite hva det gjør. Kriterium 1.1.1 Ikke-tekstlig innhold ber om et tekstalternativ som tjener samme formål, og en lenket logo beskrevet som «blå sekskantlogo» sier ingenting til en skjermleserbruker om hvor lenken går. Skriv alternativet ut fra bildets rolle: målet for et lenket bilde, funnet for et diagram, ordene for et bilde av tekst. Gi rent dekorative bilder en tom alt="", så hjelpemidlene hopper over dem.

Fokus faller til toppen av siden når en dialog lukkes. Når en dialog lukkes eller ruten endres i en enkeltsideapp, forsvinner elementet som hadde fokus. Fokus faller tilbake til dokumentets body, og en bruker med tastatur eller skjermleser mister plassen sin. Send fokus tilbake til kontrollen som åpnet dialogen. Etter et rutebytte på klienten flytter du fokus til hovedoverskriften i den nye visningen, med tabindex="-1" så den kan ta imot fokus, og skjermleseren forteller hvor brukeren har havnet.

Feil vises bare som en rød ramme. Kriterium 1.4.1 Bruk av farge krever at farge ikke er det eneste visuelle virkemiddelet for å formidle informasjon, og 3.3.1 Identifikasjon av feil ber om at en oppdaget inndatafeil identifiseres og beskrives for brukeren i tekst. En rød kant gjør ingen av delene for en som ikke skiller rødt fra grått eller ikke ser feltet i det hele tatt. Sett en kort melding ved siden av feltet som sier hva som er galt og hvordan det rettes, koble den til med aria-describedby så skjermleseren leser begge sammen, og behold fargen som et ekstra signal.

Les mer

Ordliste