Framtiden för tillgängliga dokument

Tillgänglighet för
utvecklare, del 1
Andreas Cederbom
[email protected]
Twitter: @cederbomarn
Agenda
•
•
•
•
Kort om tillgänglighet
Lagar och riktlinjer
Tester och verifiera tillgänglighet
Genomgång av krav
Nästa gång:
• Svar på era frågor
• Wai-aria och komplexa lösningar
Funka
•
•
•
•
Startades av handikapprörelsen
Privatägt bolag 2000
Oslo 2010
Madrid 2013
Vad vi gör
• Konsultverksamhet
•
•
•
•
•
•
•
Utveckling
Analys, stöd och test
Utbildning
Forskning
Samarbetsprojekt
Förtroendeuppdrag
Standardisering
Kognition
Höra
Läsa och skriva
Tala
Koncentration
Social interaktion
Motorik
Överkänslighet
Se
Design för alla
Vilka berörs?
Situationsbaserade problem
Arbetsskador
Svenska som andraspråk
Teknikovana
Tillfälliga besvär
Mobilanvändare
Personer med funktionsnedsättning
Tre delar
Innehåll
Teknik
Pedagogik
Teknik
Teknik
Exempel, eye-trackingtester
A/B test med 240 000 besökare
”The menu button was clicked
by 20% more unique visitors
than the hamburger button.”
Källa
Exempel: Innehåll
WCAG 2.0
Web Content Accessibility Guidelines
•
•
•
•
•
•
•
Internationell standard
Framtagen av W3C
Från 2008
ISO/IEC 40500:2012
Alla pekar på WCAG 2.0
Teknikoberoende
61 krav på 3 nivåer (A, AA och AAA)
Robust
WCAG
Uppfattningsbart
4 Principer
12 Riktlinjer
61 Framgångskriterier
- 3 nivåer: A, AA, AAA
>600 Tekniker och
vanliga fel
Begripligt
Hanterbart
Exempel ur WCAG
1.4.1 Use of Color: Color is not used as the only visual
means of conveying information, indicating an
action, prompting a response, or distinguishing a
visual element. (Level A)
Exempel: Beroende av färg
Exempel ur WCAG
1.3.1 Info and Relationships: Information, structure,
and relationships conveyed through presentation
can be programmatically determined or are
available in text. (Level A)
Exempel: Teknisk struktur
WCAG 2.0
• Komplext
• Gäller webb, oavsett teknik
• Säger inte hur
tillgänglighet ska uppnås
• Inkluderar inte mobilt
• Handlar nästan enbart om teknik
Lagar och riktlinjer
Diskrimineringslagen
Diskrimineringslag (2008:567)
EN 301 549:
Accessibility requirements for
procurement of ICT products
and services in Europe
Lag (2016:1145) om offentlig upphandling
”När det som anskaffas ska användas av fysiska
personer ska de tekniska specifikationerna
bestämmas med beaktande av samtliga
användares behov, däribland tillgängligheten för
personer med funktionsnedsättning.
…
Om Europeiska unionen i en rättsakt har antagit
obligatoriska krav på tillgänglighet, ska de tekniska
specifikationer som avses i första stycket bestämmas
med hänvisning till den rättsakten.”
LOU 9 Kap., 2 §
Funkas filmer om EN 301 549 (engelska)
Vad innebär det här?
•
•
•
•
•
IT generellt
Offentlig sektor
WCAG 2.0 nivå AA
Minimikrav
Nationell lag 1 januari 2017
Directive of the European
Parliament and of the
Council on the
accessibility of public
sector bodies' websites
Vad innebär det här?
• Offentlig sektor +
samhällstjänster
• Externwebb, intranät, appar
• WCAG 2.0 nivå AA
• Minimikrav
• Nationell uppföljning
Att testa…
Svårigheter
•
•
•
•
•
•
•
Stort område
Stor skillnad mellan olika användares behov
100 % tillgänglig finns inte
Teknikutvecklingen
Brist på konsensus
Kunskapsbrist
OS x Webbläsare x Hjälpmedel x Versioner ≈ ∞
Det krävs tid, kunskap och
erfarenhet för att förstå hur
WCAG ska implementeras
Olika typer av tester
•
•
•
•
Automatiska verktyg
Manuella tester
Användartester
Praktiska tester med hjälpmedel
Automatiska tester
Exempel
AccessMonitor by Fundação para a
Ciência e a Tecnologia, IP
•
SortSite by Powermapper Software
Tanaguru by Tanaguru
•
AChecker by Inclusive Design
Research Centre
•
•
TAW
•
A-Tester by Evaluera Ltd
•
Tenon by Tenon
•
Functional Accessibility Evaluator 2.0
/ AInspector by the Open
Accessibility Alliance and OpenAjax
Accessibility Task Force
•
Tingtun HTML / eAccessibility by European
Internet Inclusion Initiative
•
Total Validator by Total Validator
•
WAVE by WebAIM
•
Web-me
•
•
HiSoftware Compliance Sheriff Web
by HiSoftware Inc.
•
Mauve
•
Siteimprove Accessibility by
Siteimprove
Automatiska tester
All tillgänglighet = 100 %
Automatiska tester
Det ultimata
automatiska
verktyget ≈ 40 %
Automatiska tester
De bästa verktygen
idag klarar kanske
10 %
Men hur mycket testas egentligen?
Ett exempel:
Tanaguru har 277 tester
6
procent
Du måste vara expert för att
kunna tolka resultatet vid
automatisk testning
Verktyg för specifika delar
• Color Contrast Analyser:
• Web Accessibility Toolbar (IE):
www.paciellogroup.com/resources/contrasthttps://www.paciellogroup.com/resources/wat/
analyser.html
• Web Developer Toolbar (FF):
• W3C, Markup Validation Service:
https://addons.mozilla.org/enhttps://validator.w3.org/
US/firefox/addon/web-developer/
• W3C, CSS Validation Service:
• Web Developer Toolbar (Chrome):
https://jigsaw.w3.org/css-validator/
http://chrispederick.com/work/web-developer/
• Accessibility Evaluation Toolbar for Firefox
https://addons.mozilla.org/svSE/firefox/addon/5809/?collection_uuid=568ad3
12-b94f-4fe9-af36-061a602f698b
• Firebug: http://getfirebug.com/
• Yslow: http://developer.yahoo.com/yslow/
• Smush.it™:
http://developer.yahoo.com/yslow/smushit/
Manuella tester
Om manuella tester
•
•
•
•
•
•
Utbildning och erfarenhet
Dokumentation
Kvalitetssäkring
Använd verktyg som stöd
Involvera användare
Ni kommer att underskatta problemen
Verktyg för specifika delar
• Color Contrast Analyser:
• Web Accessibility Toolbar (IE):
www.paciellogroup.com/resources/contrasthttps://www.paciellogroup.com/resources/wat/
analyser.html
• Web Developer Toolbar (FF):
• W3C, Markup Validation Service:
https://addons.mozilla.org/enhttps://validator.w3.org/
US/firefox/addon/web-developer/
• W3C, CSS Validation Service:
• Web Developer Toolbar (Chrome):
https://jigsaw.w3.org/css-validator/
http://chrispederick.com/work/web-developer/
• Accessibility Evaluation Toolbar for Firefox
https://addons.mozilla.org/svSE/firefox/addon/5809/?collection_uuid=568ad3
12-b94f-4fe9-af36-061a602f698b
• Firebug: http://getfirebug.com/
• Yslow: http://developer.yahoo.com/yslow/
• Smush.it™:
http://developer.yahoo.com/yslow/smushit/
Användartester
När använder vi användare
•
•
•
•
•
Nya koncept
Nya lösningar
Specifika målgrupper
Nya tekniker
Hur funkar det i praktiken?
Hur testar vi
•
•
•
•
•
Traditionella användartester
Fokusgrupper
Enkätundersökningar
Distanstester
Eye-tracking
Att testa med hjälpmedel
Skärmläsare
• Windows
•
•
•
•
•
•
•
•
Jaws
Cobra
Narator (Microsoft)
NVDA
Supernova
Window-Eyes (gratis om du har
Word 2010 eller senare)
Zoomtext
Chromevox (fungerar bara med
Google Chrome)
• Android
• Talkback
• Brailleback
• Apple
• VoiceOver (Mac,
iPhone och iPad)
• Zoomtext för Mac
Varför kan man behöva testa?
För att kunna testa måste vi
först ställa krav
Tre delar
WCAG 2.0
Innehåll
Teknik
Pedagogik
Det krävs tydliga krav
Sikta inte bara
på WCAG, utgå
från användarna
Tillgänglighetskrav för utvecklare
Tre delar
Innehåll
Teknik
Pedagogik
T1. Kodkvalitet
•
•
•
Använd tekniker som går att göra
tillgängliga
Ange html-standard i !Doctype
Ange teckenuppsättning
!Doctype och teckenuppsättning
<!DOCTYPE html>
<html lang=”sv”>
<head>
<meta charset="UTF-8">
T1. Kodkvalitet
•
•
•
•
•
Använd tekniker som går att göra
tillgängliga
Ange html-standard i !Doctype
Ange teckenuppsättning
Använd korrekt kod
Använd effektiv kod
Validera kod
• WCAG pekar på specifika fel
• Sträva efter helt korrekt kod
• Validera html
http://validator.w3.org/
• Validera css
http://jigsaw.w3.org/css-validator/
Vad säger WCAG?
• WCAG kräver inte perfekt kod
• Fyra typer av fel får inte förekomma:
• Använd inte samma id-värde mer än en gång
på en sida
• Använd fullständiga start- och sluttaggar
• Nästla element i enlighet med standarden
• Använd inte samma attribut två gånger på
samma element
BYGGER DU NYTT?
Då ska koden
validera helt
korrekt
T2. Layout och presentation
• Använd inte tabeller i layoutsyfte
T2. Layout och presentation
• Använd inte tabeller i layoutsyfte
• Separera information (html) och
layout/presentation (css)
• Säkerställ att gränssnittet kan
användas utan css
T3. Gränssnittets flexibilitet
• Gränssnittet ska vara responsivt
• All information och funktionalitet ska vara
möjlig att nå och använda oberoende av
skärmstorlek
• Webbplatsen är fullt användbar och
läsbar vid förstoring
T3. Gränssnittets flexibilitet
• Gränssnittet ska vara responsivt
• All information och funktionalitet ska vara
möjlig att nå och använda oberoende av
skärmstorlek
• Webbplatsen är fullt användbar och
läsbar vid förstoring
• Bilder bör redan på servern anpassas efter
olika skärmbredder
Lås inte möjligheten att zooma
Exempel på hur du inte ska göra.
<meta name="viewport"
content="width=device-width, initial-scale=1.0,
maximum-scale=1.0, user-scalable=no" />
T4. Ramar
• Använd inte <frame> och <frameset>
• <iframe> kan användas om:
• Det inte går att integrera tjänsten direkt i
publiceringssystemet
• Du sätter en title-text på iframe-elementet för
att förklara vad ramen innehåller
Exempel: iframe
<iframe src=”…” title=”Video om Funkas analysarbete”>
…
</iframe>
T5. Skript och hjälpmedel
T5. Skript
•
•
•
Använd skript för att öka användarnyttan
Låt grundläggande funktioner fungera utan
skript
Ge relevant hjälp om användaren blockerat
skript
Exempel: Meddelande till användaren
T5. Skript
•
•
•
•
Använd skript för att öka användarnyttan
Låt grundläggande funktioner fungera utan
skript
Ge relevant hjälp om användaren blockerat
skript
Gränssnittet måste gå att använda med
hjälpmedel
Exempel: Sökförslag
Fungerar med tangentbord och
fungerar med skärmläsare
Fungerar med
tangentbord men inte
med skärmläsare
T5. Skript
•
•
•
•
•
Använd skript för att öka användarnyttan
Låt grundläggande funktioner fungera utan
skript
Ge relevant hjälp om användaren blockerat
skript
Gränssnittet måste gå att använda med
hjälpmedel
Använd WAI-ARIA för att underlätta för
användare med hjälpmedel
T6. Navigation
• Det ska vara möjligt att navigera i
gränssnittet med mus, tangentbord och
pekskärm (och andra styrlösningar)
• Tabbordningen är logisk
• Fokus är visuellt tydligt
Exempel: Tabbfokus
T6. Navigation
• Det ska vara möjligt att navigera i
gränssnittet med mus, tangentbord och
pekskärm (och andra styrlösningar)
• Tabbordningen är logisk
• Fokus är visuellt tydligt
• Använd stora klickytor
T6. Navigation
• Det ska vara möjligt att navigera i
gränssnittet med mus, tangentbord och
pekskärm (och andra styrlösningar)
• Tabbordningen är logisk
• Fokus är visuellt tydligt
• Använd stora klickytor
• Var restriktiv med täckande lager
Viktigt att tänka på
• Gör bakgrunden omöjlig att nå
för skärmläsare, aria-hidden
• Gör så att
tangentbordsnavigationen
behålls i lagret, kräver skript
• Wai-aria:
role=”alertdialog” / ”alert”
• Tona ner runt om
T6. Navigation
• Lägg in genvägar för att göra det snabbare
att navigera med tangentbordet
• Använd knappar när adressen inte ändras,
använd länkar när adressen ändras
T7. Automatiska händelser
•
•
•
•
•
Använd RIA om information måste uppdateras löpande
Ladda inte om sidor utan att användaren bett om det
Informera användarna om tidsgränser
Gör det möjligt för användaren att justera tidsgränser
Använd aria-live för att indikera om ett hjälpmedel ska
informera användaren när information i en yta uppdaterats
(när det sker dynamiskt)
aria-live support
IE
Firefox
Safari
Jaws 15
-
Jaws 14
-
Jaws 13
-
Window-Eyes 8.3
-
Supernova 13.51
NVDA 2014:3
VoiceOver (iOS 6)
System Access 2014
-
-
-
-
Testerna har
gjorts med den
webbläsarversion
som varit aktuell
för den aktuella
versionen av
hjälpmedlet
T8. Formulär
• Koda ledtexter med label-element
• Knyt samman ett label-element med varje
formulärsobjekt (for-attributet i labelelementet pekar på id-värdet för
formulärsobjektet)
• Om det finns en logisk grupp i formuläret,
använd fieldset och legend
• Använd formulärsobjekt för delar i formuläret
Exempel: Ledtext
För att detta ska fungera för användare som har behov av olika
hjälpmedel för att ta till sig informationen måste det finnas en tydlig
koppling i koden mellan ledtexten och formulärsobjektet. Detta
åstadkoms med elementet label. Använd label-element för att lägga in
samtliga ledtexter.
<label for="name">Name:</label>
<input type="text" id="name“>
Exempel: Gruppering
Längre formulär måste delas upp och grupperas. Detta gör
det enklare att se vilka delar som hör samman, både visuellt
och i ett hjälpmedel. Grupperingar av objekt görs med hjälp
av fieldset och legend.
<fieldset>
<legend>Utdelningsadress:</legend>
<label for="name1">Namn:</label>
<input type="text" name="name1" id="name1">
...
</fieldset>
<fieldset>
<legend>Faktureringsadress:</legend>
...
</fieldset>
Exempel: Gruppering
Grupperingar av radioknappar och kryssrutor görs också med
hjälp av fieldset och legend.
<fieldset>
<legend>Kön:</legend>
<input type="radio" value=“Man" id="gender_male">
<label for="gender_male">Man</label>
<input type="radio" value=“Kvinna" id="gender_female">
<label for="gender_female">Kvinna</label>
</fieldset>
Title-attributet
Använd inte title-attributet
Fungerar inte alls på knappar
Fungerar dåligt på länkar
Använd label-element, om
nödvändigt kan de vara dolda
• Använd bara title i abbr-elementet
för förkortningar
•
•
•
•
T9. Struktur
•
•
•
•
•
Koda rubriker med h1-h6
Html5 elementen article och section ska
undvikas då de i en del hjälpmedel ändrar
rubrikstrukturen
Använd korrekta listor (ul/ol och li)
Undvik förkortningar
…om du har förkortningar använd abbrelementet
T10. Datatabeller
•
•
•
•
Rubrikceller måste kodas med th-element
och scope-attribut
En titel ovanför tabellen ska läggas in
med elementet caption
Använd bara tabellceller för tabelldata
Komplexa tabeller behöver specifika
kopplingar mellan rubriker och dataceller
Exempel: Enkel tabell
<table>
<caption>Flygpriser Stockholm-Luleå</caption>
<tr>
<th></th>
<th scope="col">2013-12-23</th>
<th scope="col">2013-12-24</th>
<th scope="col">2013-12-25</th>
</tr>
<tr>
<th scope="row">10:47</th>
<td>1125:-</td>
<td>422:-</td>
<td>1533:-</td>
</tr>
...
Exempel: Komplex tabell
<table>
<caption>Flygpriser Stockholm-Luleå</caption>
<tr>
<th></th>
<th colspan="3" id="ffa">Norwegian</th>
<th colspan="3" id="ff">SAS</th>
</tr>
<tr>
<th></th>
<th id="d071223a" headers="ffa">2013-12-23</th>
<th
<th
<th
<th
<th
</tr>
<tr>
id="d071224a"
id="d071225a"
id="d071223b"
id="d071224b"
id="d071225b"
headers="ffa">2013-12-24</th>
headers="ffa">2013-12-25</th>
headers="ff">2013-12-23</th>
headers="ff">2013-12-24</th>
headers="ff">2013-12-25</th>
<th id="morgon">Morgonflyg</th>
<td headers="ffa d071223a morgon">1125:-</td>
<td
<td
<td
<td
<td
</tr>
…
headers="ffa d071224a morgon">422:-</td>
headers="ffa d071225a morgon">1533:-</td>
headers="ff d071223b morgon">1099:-</td>
headers="ff d071224b morgon">650:-</td>
headers="ff d071225b morgon">1701:-</td>
T11. Länkar
• Om länkarna på din webbplats behöver
vara understrukna för att synas så ska
det inte vara beroende av inställningar i
din webbläsare
T12-T13. Bilder
•
Använd inte bilder för att visa text
T12-T13. Bilder
•
•
•
Använd inte bilder för att visa text
Komplettera bilder med en alt-text
Tala om för användaren var
denne hittar motsvarande
information I text
Klicka på bilden för att komma till exemplet
Exempel där alt-texten bör vara tom
Exempel
Exempel
T14. Ljud
• Information som presenteras som
ljud är även förklarad i text
• Bakgrundsljud kan enkelt stängas
av manuellt eller avslutas
automatiskt
inom 3 sekunder
T15. Komplexa medieformat
exempelvis film och pdf
• Det finns en lämplig textbeskrivning av
material i komplexa format i anslutning till
materialet
• Material som presenteras med komplexa
medieformat har tillgänglighetssäkrats
T16. Färger och kontraster
• Webbplatsen blockerar inte
användarens möjlighet att göra
egna inställningar av färg och
teckensnitt i webbläsaren
T17. Rörelser i gränssnittet
• Undvik rörliga objekt…
• …men om du har sådana,
se till att de går att pausa
T18. Information och hjälp
• Sidorna har unika och relevanta sidtitlar
• Metadata ger information som har
betydelse för sidan och webbplatsen
• Sidans huvudsakliga språk är angivet i koden
• Språk som avviker från sidans huvudsakliga
språk är angivet i koden
• Om en förklaring finns för hur en användare
med hjälpmedel ska hantera
en viss funktion bör förklaringen och
funktionen vara sammankopplade
Tre delar
Innehåll
Teknik
Pedagogik
P3. Logik
•
Konsekvent benämning och utformning
Exempel, samma webbplats, olika objekt som fäller ut områden:
P4. Begriplighet
•
•
Förstår användarna var ändringar sker?
Ge relevant återkoppling
P4. Begriplighet
•
•
•
Förstår användarna var ändringar sker?
Ge relevant återkoppling
Undvik att länka till den aktiva sidan/vyn
P6. Sökfunktion
•
Det behövs alltid minst två sätt att hitta
en specifik sida
P9. Utformning av formulär
•
•
Konsekvent
Låt användaren kunna ångra sig
P10. Utformning av knappar
•
•
Konsekvent placering, utformning och
benämning
Var tydliga med funktionen
P11. Felhantering
•
Informera om vad som är fel och hur
det ska åtgärdas
P12. Länkar
•
•
Varje länk och knapp ska tydligt
redogöra för syftet
Undvik title-texter
P15. Färger och kontraster
•
Använd färger men förlita dig inte på
dem
Exempel: Beroende av färg
Exempel: Beroende av färg
P15. Färger och kontraster
•
•
•
•
Använd färger men förlita dig inte på
dem
Använd goda kontraster
Undvik röriga bakgrunder
Undvik rörliga objekt, men om du har
sådana, se till att de går att pausa
P19. Hjälp
•
•
•
Erbjud hjälp där det behövs
Informera om alternativ
Specifik information till
hjälpmedelsanvändare?
Sikta inte bara
på WCAG, utgå
från användarna
Det finns inga
normalanvändare