Startsida / Kurs/ Fakta-serien / Webbplatser med tillgänglighet
"Använd kodning och formatmallar (style sheets) och gör det rätt"
3.1 [Prioritet 2] När lämpligt kodningsspråk finns tillgängligt, använd kodningen snarare än bilder. Undvik alltså att göra en klickbar bild som föreställer en navigeringsmeny.
3.2 [Prioritet 2] Skapa dokument som kan valideras i formella kodningssystem.
3.3 [Prioritet 2] Använd formatmallar för att styra layout och presentation
3.4 [Prioritet 2] Använd relativa snarare än absoluta enheter i kodningens attributvärden och i formatmallarnas egenskapsvärden.
3.5 [Prioritet 2] Använd element i HEAD-delen av dokumentet för att ange dokumentstrukturen och använd dem som specificerat. Använd t.ex. H2 som undersektion till H1 och inte för att skapa typsnittseffekter.
3.6 [Prioritet 2] Koda listor och listposter rätt. Använd OL, UL och DL rätt.
3.7 [Prioritet 2] Koda citat. Använd inte QUOTE för att skapa formatteringseffekter, som indrag.
WCAG riktlinje 3 handlar mycket om presentationen av innehållet. Jag kommer att gå genom vad som praktiskt kan göras för presentationen av ett givet informationsmaterial.
När det gäller presentation av ett givet informationsmaterial med villkoret att informationen inte får förändras ska vi snart se att det går att påverka rätt mycket.
Säkert har dessa steg redan tagits genom strukturen av informationen:
Exempel på hur struktur kan påverkas:
Exempel på hur presentationen kan påverka tillgängligheten:
I denna övning kommer vi att fokusera på hur användaren själv kan påverka teckenstorlek, kontrast och val av typsnitt.
Vi börjar i änden med användarkontroll och arbetar oss bortåt.
Med användarkontroll menas antingen att användaren/besökaren får en liten panel där innehållet kan påverkas eller att kända snabbkommandon används för att påverka presentationen.
Exempel på användarkontrollpaneler i skala 1:1 är:
regeringen.se
tibo.se
uu.se
...osv.
I ovanstående exempel visas tydligt det jag är ute efter, det saknas en standard för hur användarkontroller ska se ut och vilka val som ska erbjudas.
Min andra erfarenhet är att dessa paneler är så små att de som har behov av presentationsanpassning ofta har problem med att hitta dem.
Vi kan slå fast att "panelerna" behöver få en prominent plats på skärmen långt från "hungriga skrollnings-troll".
Här är mitt förslag som jag kommer att jobba på i denna presentation tillsammans med lite exempeltext:
Öppna anpassa-panelen i nytt fönster
Anpassningspanelen skapade jag så här:
<style> |
fieldset {font: normal 1em verdana; width: 100px;} |
legend {font: normal 0.9em verdana; color: #000; } |
.anpassa {text-align: center; padding-bottom:20px;} |
.normaltext {background-color: #ffffee; color: black;} |
.kontrasttext {background-color: #333333; color: #ffff00;} |
</style> |
... |
<fieldset> |
<legend>Anpassa </legend> |
<div class="anpassa"><span style="font: normal 0.8em Arial">-A</span> <span style="font: normal 1em Arial">A</span> <span style="font: normal 1.3em Arial">A+</span></div> |
<span class = "normaltext"> Text </span> <span class = "kontrasttext"> Text </span> |
</fieldset> |
Min motivering för designen är följande:
Det finns flera metoder för att jobba med personlig anpassning. Jag visar den enkla som bygger på att användaren, genom att klicka på textstorleksanpassning, helt enkelt byter ut aktuell formatmall.
Det låter enkelt, men det som måste fungera inuti "svarta lådan" är att man genom länkklicket tar med sig önskad storlek och sparar denna anvisning i en Cookie. Det gör att man inte behöver ställa om textstorleken för varje sida som besöks på webbplatsen.
Cookie är en liten fil (max 4096 byte enligt RFC 2109, men oftast mindre) som sparas i användarens dator och innehåller den information som programmeraren bestämmer. Användaren kan dock neka att spara Cookie'n så det går inte att lita till 100% på funktionen.
När användaren har valt en storlek på texten och inställningen sparats i cookie'n, används den därefter på alla efterföljande webbsidor inom webbplatsen.
Observera att ett användarval påverkar inte webbsidans utseende för alla besökare, utan endast för den som gjort sin inställning.
Eftersom vi vill undvika att sätta stilar med HTML, då det låser möjligheten att påverka presentationen, så måste presentationen sättas med formatmallar (CSS).
Läs mer om formatmallar CSS i FAKTA-serien.
Med ASP skriptteknologi är det möjligt att göra dynamisk webbkod och därmed skapa dynamiska webbsidor. Det mesta med användarval kretsar kring att vi ska komma åt det som användaren valt (klickat).
En länk som innehåller data ser ut så här
<a href="webbsida.htm?variabel=värde">Länk</a>
Det som tillkommer i ovanstående exempel är något som kallas QueryString.
En QueryString inleds alltid med ett frågetecken, följt av en godtycklig variabel samt dess värde.
url?variabel=värde
Vid fler variabler, avgränsas dessa med ett &-tecken, enligt nedanstående exempel:
url?variabel1=värde1&variabel2=värde2
osv...
Undersök vilka variabler och vilka värden som används i följande exempel:
Öppna anpassa-panelen i nytt fönster
Besvara
för dig själv:
Vilka variabler hittade du?
Vilka var dess värden?
Ok, vi har panelen - Anpassa klar. Nu är det dags att ordna funktionerna.
När användaren klickat på t.ex. A+ kommer, i vårt fall, länken att länka tillbaka till samma sida.
På den sidan ska vi läsa av QueryString'en och se vad användaren begärt.
Vi läser av genom att använda ASP - skriptteknik. Kom ihåg att så fort vi ska använda oss av ASP, måste filändelsen vara .ASP samt exekveras från en webbserver.
Se på följande fil som är döpt till fil.asp.
Öppna anpassa-panelen i nytt fönster
Välj att visa källan till ovanstående fil. Notera att HTML-koden innehåller samma information som finns i QueryString'en.
Förenklat åstadkoms ovanstående genom följande:
HTML-kod... |
<% |
response.write request.queryString("textStorlek") |
%> |
HTML-kod... |
Mitt bland HTML-koden kan man "lämna" HTML-kod för att gå över till
ASP-kod genom <%
och avsluta med %>
Mellan dessa ASP-avgränsare skriver man sitt serverskriptspråk, jag har
valt det enklaste, VisualBasic Script.
Response.write
- betyder skriv ut följande till webbläsarenrequest.queryString("textStorlek")
betyder läs variabeln
textStorlek's värde från frågesträngen.Alltså, skriv ut textStorlek värdet och visa det i webbläsaren
Vi har ännu inte uppnått teckensnittsförändring, men vi är nära nu.
När vi nu användaren har gjort ett anpassningsval bör vi spara det för kommande visningar inom webbplatsen. Vi sparar genom att lagra det i en cookie.
Här sparas alla anpassningsval under ett gruppnamn som jag valt att heta anpassa (första delen efter response.cookies).
<%
response.cookies("anpassa")("textStorlek") = request.queryString(Item)
%>
Värdet på variabeln textStorlek som nu finns på URL'en (frågesträngen) ska matas in i en cookie. Där lagras värdet på variabeln textStorlek under ett gruppnamn som heter anpassa.
Vi läser cookien på samma sätt
<%
request.cookies("anpassa")("textStorlek")
%>
Istället för response, används nu istället kommandot request.
Öppna anpassa-panelen i nytt fönster
Mer om cookies, ASP-request och ASP-response.
Nu har vi alla pusselbitar, det är dags att lägga ihop dessa.
- Länkar tar med värden
<a href="fil.htm?data=11">
- Vi läser av frågesträngen i URL (webbadressen)
<% request.queryString("data") %>- Vi lagrar värden i cookies
<% response.cookies("data")=11 %>
- Vi återläser från cookies
<% request.cookies("data")
- Vi låter cookie's värden påverka en dynamiskt utformad formatmall (CSS). Se nedan
Prova den här koden
<% |
'hämta värden |
if len(request.serverVariables("QUERY_STRING")) > 0 then |
For Each Item In request.queryString |
response.cookies("anpassa")(Item) = request.queryString(Item) |
next |
end if |
'läs från cookie |
Storlek = "font-size: " & request.cookies("anpassa")("textStorlek") & "em; " |
select case request.cookies("anpassa")("textKontrast") |
case "normal" kontrastColor = "background-color: #ffffee; color: #000000; " |
case "kontrast" kontrastColor = "background-color: #333333; color: #ffff00; " |
end select |
select case request.cookies("anpassa")("textStil") |
case "serif" Stil = "font-family: Georgia; " |
case "sans-serif" Stil = "font-family: Verdana ; " |
end select |
%> |
<html> |
<head> |
<title>Anpassa</title> |
<% |
with response |
.write "<style>" & vbCRLF |
.write "h1, h2, p, li { " & Storlek & "}" & vbCRLF |
.write "body { " & kontrastColor & Stil & "}" & vbCRLF |
.write "</style>" |
end with |
%> |
</head> |
<body> |
<a href="mr66.asp?textStorlek=0.8" title="Mindre text">Liten</a> | |
<a href="mr66.asp?textStorlek=1" title="Normal text">Normal</a> | |
<a href="mr66.asp?textStorlek=1.2" title="Större text">Stor</a> | |
<a href="mr66.asp?textKontrast=normal" title="Normal kontrast">Normal kontrast</a> | |
<a href="mr66.asp?textKontrast=kontrast" title="Högre kontrast">kontrast</a> | |
<a href="mr66.asp?textStil=serif" title="Teckensnitt med serif">Serif</a> | |
<a href="mr66.asp?textStil=sans-serif" title="Teckensnitt utan serif">Utan serif</a> |
<h1>Detta är en H1 exempelrubrik</h1> |
<p>Detta är ett P exempelstycke</p> |
</body> |
</html> |
Prova filen så här långt.
Öppna anpassa-panelen i nytt fönster
Återstår att införa ovanstående på projektsidan "Mänskliga rättigheter".
Slutresultatet
Öppna anpassa-panelen i nytt fönster
Givetvis finns det mer att önska av denna sida, t.ex bättre färgkombinationer vid högkontrast, men det medger inte tiden just nu.