Landmärke
en region på en sida som en skärmläsare kan hoppa till
Vad det är
Ett landmärke, även kallat landmärkesregion eller ARIA-landmärke, är en del av en webbsida som uppmärkningen namnger efter dess syfte, t.ex. sidhuvudet, huvudinnehållet, navigeringen eller sidfoten, så att hjälpmedel kan lista de delarna och gå direkt till vilken som helst av dem. En sida har oftast flera landmärken, och tillsammans beskriver de sidans upplägg för den som aldrig ser det.
WAI-ARIA 1.2 definierar åtta landmärkesroller: banner, navigation, main, complementary,
contentinfo, search, form och region. En nionde, landmark, är den abstrakta föräldern i
specifikationens rollmodell, och specifikationen säger uttryckligen att den inte ska användas i
uppmärkning. De flesta sidor behöver aldrig attributet role för att få de övriga åtta, eftersom
HTML-elementen redan bär dem:
mainär landmärketmain, ochnavär ettnavigation-landmärke.headerochfooterblirbannerochcontentinfobara när de hör till sidan som helhet. Placerade inuti enarticle, ensectionellermainär de vanlig sidstruktur och inte landmärken alls.asideärcomplementarypå sidans översta nivå eller inutimain. Inuti annat sektionerande innehåll räknas det bara när det har ett namn.sectionblir ettregion-landmärke först när elementet har ett tillgängligt namn, antingen frånaria-labeleller från en rubrik som pekas ut medaria-labelledby. Ensectionsom saknar namn är bara en grupp.formmotsvarar rollenform, och specifikationen kräver att formuläret får en etikett. Det nyare elementetsearchmotsvarar rollensearch.
Specifikationen ber hjälpmedel att låta människor nå de här regionerna snabbt, och skärmläsare gör
det. I NVDA flyttar D till nästa landmärke, och elementlistan visar alla på en gång; rotorn i
VoiceOver har en egen lista över landmärken. Den som kommer till en ny sida kan öppna listan, höra
att det finns en banner, en navigering, ett huvudinnehåll och en sidfot, och känna till sidans form
innan hen har läst ett enda ord av den.
Varför det spelar roll
Beslutet bakom landmärken gäller om varje del av en sida ligger någonstans där en lyssnare kan namnge den och nå den. På en vanlig sida är det mesta innehållet upprepat: sidhuvudet, menyn, sidfoten och ofta en sidopanel ser likadana ut på varje sida på webbplatsen, och det som är nytt ligger någonstans i mitten. En seende besökare tittar direkt dit. Den som använder skärmläsare på en sida utan landmärken får i stället lyssna sig förbi samma sidhuvud och samma meny på varje sida, eller gissa hur många rubriker som ska hoppas över.
WCAG:s egen teknik för landmärken, ARIA11, anges som ett tillräckligt sätt att uppfylla tre framgångskriterier. Ett av dem kräver ett sätt att hoppa förbi innehållsblock som upprepas mellan sidor; ett annat kräver att den struktur som en seende läsare får ut av layouten också finns tillgänglig för programvara. För en offentlig webbplats i Sverige är kriterierna ett lagkrav och inte bara god sed: DOS-lagen hämtar sina krav ur EN 301 549, och den standarden vilar i sin tur på WCAG.
Kostnaden för att uppfylla kriterierna på det här sättet är liten när sidan byggs av header,
nav, main och footer från början: semantiken följer med elementet, och det finns inget extra
att underhålla. Att i efterhand föra in landmärken i en layout av nästlade div-element kostar
mer, men arbetet är till största delen mekaniskt.
Två gränser är värda att känna till. Den första är att specifikationen låter vanliga webbläsare
avgöra själva om de erbjuder navigering mellan landmärken, så den som använder tangentbord utan
skärmläsare har oftast ingen nytta av landmärkena på egen hand, och en synlig länk som hoppar förbi
menyn gör fortfarande nytta. Den andra är att fler landmärken inte gör en sida lättare att använda.
Varje landmärke är en rad i en lista som någon måste lyssna sig igenom, och en sida där varje block
är en namngiven region låter som en innehållsförteckning på femtio rader. Specifikationen reserverar
region för innehåll som är viktigt nog att finnas med i en sammanfattning av sidan, och ber att
rollen bara används när ingen av de andra rollerna beskriver syftet.
Så ser det ut i praktiken
Landmärken hör till den del av en sida som ögat inte ser, och de tre fallen här visar samma sak från olika håll: ett fel i dem syns i en kontroll som letar efter det, aldrig i en skärmbild.
Det första kom under arbetet med att ta hela webbplatsen till WCAG 2.2 på nivå AA. Automatiseringen kör en regelmotor för tillgänglighet med reglerna för bästa praxis aktiverade, inte bara reglerna för överensstämmelse, vilket är en skillnad på trettio regler. En av de extra reglerna fallerade i samma ögonblick som den slogs på, eftersom varumärkessymbolen låg utanför alla landmärken på varje undersida. Skärmen avslöjade ingenting av det.
Det andra förklarar varför det första hade passerat obemärkt. Bland elva fel som webbläsaren hade kallat friska låg två i själva kontrollerna snarare än i sidorna, och ett av dem var att regelmotorn hade kört sjuttio av sina hundrafem regler. Regeln som skulle ha fångat det saknade landmärket fanns helt enkelt inte med i uppsättningen. Slutsatsen som sidan drar är kort: en regeluppsättning som inte innehåller regeln kan inte upprätthålla den.
Det tredje gällde en sida utanför huvudwebbplatsen. Landningssidan framför
företagets egen git-forge hade varit en
handunderhållen kopia av huvudwebbplatsens design, och varenda skillnad som någonsin hittats mellan
de två visade sig vara ett misstag snarare än ett beslut. En av de fem var att det saknades både
main-landmärke och huvudrubrik på samtliga sidor, och inte en enda av de fem syntes i en
skärmbild. Kopian togs bort, och landningssidan byggs nu av huvudwebbplatsens egna mallar, så den
ärver samma struktur i stället för att efterlikna den.
Var det går fel
På skärmen syns misstag med landmärken aldrig, men i en skärmläsare hörs de tydligt. Här är de vanligaste.
Innehåll hamnar utanför alla landmärken. En logotyp, ett cookiemeddelande eller en språkväljare
placeras före header eller efter footer, och den som rör sig mellan landmärken hoppar förbi det.
Regeln region i axe rapporterar allt innehåll som inte ligger i ett landmärke, men den är märkt
som bästa praxis snarare än som ett WCAG-fel, så en körning som är begränsad till WCAG-taggarna kör
den aldrig. Slå på reglerna för bästa praxis, och flytta det vilsekomna elementet in i det
landmärke där det hör hemma.
Samma roll förekommer två gånger med samma namn. Två nav-element, ett i sidhuvudet och ett i
sidfoten, läses båda upp med samma rollnamn, och lyssnaren får gissa vilket som är vilket. Ge vart
och ett en kort, tydlig etikett med aria-label eller aria-labelledby, och lämna rollen utanför
etiketten. Skärmläsaren lägger själv till rollnamnet efter etiketten, så en navigering med
etiketten ”Webbplatsnavigering” får ordet navigering uppläst två gånger i rad.
Ett andra main eller banner dyker upp. En div får role="main" eller role="banner" för
att en komponent ska kännas viktig, eller så sveper en mall in en undersida i ett eget main, och
sidan presenterar nu två av en roll som den bara skulle ha en av. Specifikationen begär högst en
banner, en main och en contentinfo per sida, och axe har en regel för var och en av dem.
Kontrollera listan över landmärken efter varje ändring av layouten, och låt de inbyggda elementen
bära rollerna överallt där de kan.
Varje block blir en region. Ett komponentbibliotek ger varje section en aria-label som
standard, och listan över landmärken fylls av rubriker från kort. Namnge en section bara när en
läsare skulle vilja hoppa dit från var som helst på sidan.
En sida som är uppbyggd som skissen nedan ger en lyssnare fem stopp, vart och ett med sitt eget namn:
<header><!-- logo, search --></header>
<nav aria-label="Site"><!-- menu --></nav>
<main>
<h1>Prices</h1>
<section aria-labelledby="hosting">
<h2 id="hosting">Hosting</h2>
</section>
</main>
<footer><!-- contact, legal --></footer>
Läs mer
- WAI-ARIA 1.2: Landmark Roles — de åtta rollerna, vad var och en är till för och vilka av dem som måste ha en etikett.
- Landmark Regions — W3C:s guide för den som skriver uppmärkning, om att välja roller, ge upprepade landmärken etiketter och hålla allt innehåll inuti ett landmärke.
- HTML Accessibility API Mappings 1.0 — vilka HTML-element
som blir vilka roller, bl.a. när
header,footer,asideochsectionräknas som landmärken. - ARIA11: Using ARIA landmarks to identify regions of a page — WCAG-tekniken, med dess testprocedur och de framgångskriterier som den uppfyller.