Landmærke
et område på siden, en skærmlæser kan springe til
Hvad det er
Et landmærke, også kaldet en landmærkeregion eller på engelsk et ARIA landmark, er en del af en webside, som markup’en navngiver efter dens formål, for eksempel sidehovedet, hovedindholdet, navigationen eller sidefoden, så hjælpemidler kan liste de dele og gå direkte til en hvilken som helst af dem. En side har som regel flere landmærker, og tilsammen beskriver de layoutet for en person, der aldrig ser layoutet.
WAI-ARIA 1.2 definerer otte landmærkeroller: banner, navigation, main, complementary,
contentinfo, search, form og region. En niende, selve landmark, er den abstrakte overrolle
i specifikationens rollemodel, og forfattere får besked på ikke at bruge den. De fleste sider
behøver aldrig attributten role for at få de andre, fordi HTML-elementerne allerede bærer dem:
mainer landmærketmain, ognaver etnavigation-landmærke.headerogfooterbliver kun tilbannerogcontentinfo, når de hører til siden som helhed. Placeret inde i enarticle, ensectionellermainer de almindelig sidestruktur og slet ikke landmærker.asideercomplementarypå sidens øverste niveau eller inde imain. Inde i andet sektionsindhold tæller den kun, når den har et navn.sectionbliver kun etregion-landmærke, når den har et tilgængeligt navn, fraaria-labeleller fra en overskrift, der henvises til medaria-labelledby. Ensectionuden navn er bare en gruppe.formsvarer til rollenform, og specifikationen kræver, at forfattere giver den en etiket. Det nyere elementsearchsvarer tilsearch.
Specifikationen beder hjælpemidler om at lade folk nå disse områder hurtigt, og skærmlæsere gør det.
I NVDA flytter D til næste landmærke, og elementlisten viser dem alle på én gang; VoiceOvers rotor
har sin egen liste over landmærker. En bruger, der lander på en side, kan åbne listen, høre, at der
er et sidehoved, en navigation, et hovedområde og en sidefod, og kende sidens form, før et eneste
ord af indholdet er læst.
Hvorfor det betyder noget
Beslutningen bag landmærker er, om hver del af en side ligger et sted, en lytter kan navngive og nå. På en typisk side er det meste af indholdet gentaget: sidehovedet, menuen, sidefoden og ofte en sidebjælke er de samme på hver side af sitet, og det, der er nyt, ligger et sted i midten. En seende besøgendes øjne går direkte derhen. Uden landmærker må en skærmlæserbruger lytte sig forbi det samme sidehoved og den samme menu på hver side eller gætte på, hvor mange overskrifter der skal springes over.
WCAG’s egen teknik for landmærker, ARIA11, er opført som en tilstrækkelig måde at opfylde tre
succeskriterier på. Et af dem kræver en måde at springe over indholdsblokke, der gentages på tværs
af sider; et andet kræver, at den struktur, en seende læser aflæser af layoutet, også er tilgængelig
for software. Det koster lidt at opfylde dem på den måde, når siden fra begyndelsen er bygget af
header, nav, main og footer: semantikken følger med elementet, og der er intet ekstra at
vedligeholde. At eftermontere landmærker i et layout af indlejrede div-elementer koster mere, men
arbejdet er for det meste mekanisk.
Der er to grænser, det er værd at kende. Den første er, at specifikationen gør landmærkenavigation
valgfri for almindelige browsere, så en tastaturbruger uden skærmlæser som regel ikke får noget ud
af landmærkerne alene, og et synligt spring-til-indhold-link er stadig sin plads værd. Den anden er,
at flere landmærker ikke gør en side lettere at bruge. Hvert landmærke er en post på en liste, som
nogen skal høre, og en side, hvor hver blok er en navngiven region, lyder som en indholdsfortegnelse
på halvtreds linjer. Specifikationen forbeholder region til indhold, der er vigtigt nok til at stå
i en oversigt over siden, og beder forfattere bruge den, kun når ingen af de andre roller beskriver
formålet.
Sådan ser det ud i praksis
Tre stykker arbejde på dette site viser den samme lære fra hver sin side: et manglende landmærke er en af de få tilgængelighedsfejl, som ingen nogensinde opdager ved at kigge.
Den første kom under arbejdet med at tage hele sitet til WCAG 2.2 niveau AA. Automatiseringen kører en tilgængelighedsregelmotor med dens bedste praksis-regler slået til, ikke kun konformitetsreglerne, hvilket er en forskel på tredive regler. En af de ekstra regler fejlede i det øjeblik, den blev slået til, fordi mærket lå uden for hvert landmærke på hver indre side. Intet på skærmen afslørede det.
Den anden forklarer, hvorfor den første var gået ubemærket hen. Blandt elleve tilgængelighedsfejl, som browseren meldte sunde, sad to i vagterne frem for i siderne, og den ene var, at regelmotoren havde kørt halvfjerds af sine hundrede og fem regler. Den regel, der ville have fanget det manglende landmærke, var simpelthen ikke i sættet. Læren, siden drager, er kort: et regelsæt, der ikke indeholder reglen, kan ikke håndhæve den.
Den tredje lå på en side uden for hovedsitet. Landingssiden foran virksomhedens egen git-forge havde været en håndholdt kopi af hovedsitets design, og hver eneste forskel, der blev fundet mellem de to, viste sig at være et uheld og ikke en beslutning. En af de fem var, at der intet hovedlandmærke eller overskrift på øverste niveau var på nogen side, og ikke én af de fem var synlig på et skærmbillede. Kopien blev slettet, og landingssiden bygges nu af hovedsitets egne skabeloner, så den arver den samme struktur i stedet for at efterligne den.
Hvor det går galt
Landmærkefejl er tavse på skærmen og tydelige at høre i en skærmlæser. Det er de almindelige.
Indhold havner uden for hvert landmærke. Et logo, en cookiemeddelelse eller en sprogvælger
placeres før header eller efter footer, og en lytter, der bevæger sig efter landmærker, springer
forbi den. Axe-reglen region melder alt indhold, der ikke ligger i et landmærke, men den er mærket
som bedste praksis og ikke som et WCAG-brud, så en kørsel, der er begrænset til WCAG-mærkerne,
udfører den aldrig. Slå bedste praksis-reglerne til, og flyt det løse element ind i det landmærke,
det hører til.
Den samme rolle optræder to gange med samme navn. To nav-elementer, et i sidehovedet og et i
sidefoden, annonceres begge som »navigation«, og lytteren må gætte, hvilken der er hvilken. Giv hver
en kort, tydelig etiket med aria-label eller aria-labelledby, og lad rollen blive ude af
etiketten: en navigation med etiketten »Site navigation« læses op som »Site navigation navigation«.
Et ekstra main eller banner dukker op. En div får role="main" eller role="banner" for at
gøre en komponent vigtig, eller en skabelon pakker en underside ind i sit eget main, og siden
annoncerer nu to af en rolle, den skulle have én af. Specifikationen beder om højst ét banner, ét
main og ét contentinfo pr. side, og axe har en regel for hver. Tjek landmærkelisten efter hver
ændring af layoutet, og lad de indbyggede elementer bære rollerne, hvor de kan.
Hver blok bliver en region. Et komponentbibliotek giver som standard hver section en
aria-label, og landmærkelisten fyldes med korttitler. Navngiv kun en section, når en læser kunne
ønske at springe til den fra et hvilket som helst sted på siden.
En side, der er bygget som skitsen herunder, giver en lytter fem stop, hvert med sit eget navn:
<header><!-- logo, søgning --></header>
<nav aria-label="Site"><!-- menu --></nav>
<main>
<h1>Priser</h1>
<section aria-labelledby="hosting">
<h2 id="hosting">Hosting</h2>
</section>
</main>
<footer><!-- kontakt, jura --></footer>
Læs mere
- WAI-ARIA 1.2: Landmark Roles — de otte roller, hvad hver af dem er til, og hvilke der skal have en etiket.
- Landmark Regions — W3C’s vejledning for forfattere om valg af roller, etiketter på gentagne landmærker og om at holde alt indhold inde i et af dem.
- HTML Accessibility API Mappings 1.0 — hvilke HTML-elementer
der bliver til hvilke roller, også hvornår
header,footer,asideogsectiontæller som landmærker. - ARIA11: Using ARIA landmarks to identify regions of a page — WCAG-teknikken med dens testprocedure og de succeskriterier, den opfylder.