WCAG framgångskriterier · Level A
WCAG 2.4.1: Hoppa över block
WCAG 2.4.1 kräver att webbsidor tillhandahåller en mekanism för att hoppa över upprepade innehållsblock, såsom navigationsmenyer, så att tangentbordsanvändare och användare av hjälpmedel kan nå huvudinnehållet utan att tabba genom varje länk. Detta är ett krav på nivå A, vilket innebär att det är basnivån för tillgänglig tangentbordsnavigering.
Vad den här regeln innebär
WCAG 2.4.1 Bypass Blocks säger: "A mechanism is available to bypass blocks of content that are repeated on multiple Web pages." I praktiska termer betyder detta att varje samling länkar, navigationsmenyer, banners eller andra innehållsblock som visas konsekvent på flera sidor måste ha ett sätt för användare att hoppa över det och gå direkt till det unika innehållet på den aktuella sidan.
Den mest allmänt erkända implementeringen är en skip navigation-länk — ett ankarelement placerat som det allra första fokuserbara objektet på sidan, som länkar till huvudinnehållet via en fragmentidentifierare som #main-content. WCAG accepterar dock även andra bypass-mekanismer, inklusive korrekt strukturerade landmark-regioner (såsom HTML5-elementen <main>, <nav> och <header> eller deras ARIA-motsvarigheter) och rubrikstrukturer som gör det möjligt för skärmläsaranvändare att hoppa mellan sektioner.
En sida klarar detta kriterium när minst ett av följande är sant: en skip-länk finns och fungerar; sidan använder meningsfulla HTML5-landmarkelement som hjälpmedelstekniker exponerar för snabb navigering; eller en likvärdig tangentbordsgenväg eller navigeringsmekanism på sidan gör det möjligt för användare att hoppa över upprepade block. Skip-länken kan vara visuellt dold som standard, men den måste bli synlig vid tangentbordsfokus, och den måste faktiskt flytta tangentbordsfokus till målet när den aktiveras — inte bara rulla vyn.
En sida underkänns mot detta kriterium när: det inte finns någon skip-länk, ingen landmark-struktur och ingen annan mekanism; en skip-länk finns men är permanent dold via display:none eller visibility:hidden (vilket gör den ofokuserbar); skip-länkens målankare inte finns i DOM:en; eller länken finns men flyttar inte fokus, vilket gör att tangentbordsanvändare fortfarande tvingas tabba genom varje navigationsobjekt. WCAG medger ett undantag för sidor där det inte finns något upprepat block — till exempel ett enkelsidigt dokument utan navigationshuvud — men detta undantag är snävt och gäller sällan för webbplatser i verkligheten.
Varför det är viktigt
Detta kriterium påverkar direkt flera grupper av användare. Endast-tangentbordsanvändare — inklusive personer med motoriska funktionsnedsättningar såsom belastningsskador, förlamning eller tremor — navigerar helt genom att trycka på Tab för att flytta mellan interaktiva element. Utan en bypass-mekanism måste de trycka på Tab dussintals gånger bara för att nå det första unika innehållet på varje sida de besöker. En typisk webbplatsnavigering med 10 till 20 länkar multiplicerat över hundratals sidvisningar blir en betydande fysisk och tidsmässig belastning.
Skärmläsaranvändare som är blinda eller har nedsatt syn förlitar sig på landmark-regioner och rubriker för att orientera sig och hoppa mellan sektioner på en sida. Även om moderna skärmläsare (JAWS, NVDA, VoiceOver) erbjuder egna kortkommandon för att navigera mellan landmarks och rubriker, fungerar dessa genvägar bara när sidan är korrekt strukturerad. En sida utan landmarks och utan skip-länk tvingar fram linjär läsning av varje element från toppen, inklusive upprepad navigering, varje gång sidan laddas.
Överväg ett scenario från verkligheten: en synskadad medborgare i Turkey som besöker en e-förvaltningsportal för att lämna in en självdeklaration. Portalen har en toppnavigationsrad med 18 länkar, en brödsmuleväg med 4 länkar och en sekundär sidopanel med 12 länkar — totalt 34 Tab-tryckningar innan formulärfälten nås. Utan en bypass-mekanism måste denna användare navigera genom alla 34 element på varje sida i den flerstegade processen. En korrekt implementerad skip-länk minskar detta till ett enda knapptryck.
Kognitiv tillgänglighet är också en faktor: användare med uppmärksamhetsrelaterade svårigheter gynnas av att kunna gå direkt till relevant innehåll utan att behöva bearbeta upprepade, distraherande navigationselement. Utöver tillgång för personer med funktionsnedsättning förbättrar välstrukturerade landmark-regioner även SEO, eftersom sökmotorers crawlers använder dokumentstrukturen för att förstå innehållshierarki och relevans. Tillgänglig navigationsarkitektur och tydlig landmark-struktur bidrar till bättre indexering och potentiellt högre sökrankning.
Relaterade Axe-core-regler
- bypass: Denna regel kontrollerar om sidan tillhandahåller någon mekanism för att hoppa över upprepade navigationsblock. Axe inspekterar sidan för förekomst av en skip-länk som pekar på ett befintligt ankare på sidan, för förekomst av ARIA-landmarkroller (
role='main',role='navigation'osv.) eller HTML5-landmarkelement (<main>,<nav>,<header>,<footer>,<aside>) och för ARIA-attributenaria-labelelleraria-labelledbysom gör flera landmarks åtskiljbara. Regeln flaggar en överträdelse när ingen av dessa mekanismer finns. Observera att denna regel kräver manuell verifiering i vissa fall — till exempel kan axe upptäcka att en skip-länk finns men kan inte automatiskt bekräfta att den flyttar tangentbordsfokus till rätt plats när den aktiveras. - skip-link: Denna regel riktar sig specifikt mot skip-länkar och kontrollerar om målelementet som refereras av en skip-länks
href-attribut (t.ex.#main-content) faktiskt finns i DOM:en och kan nås med tangentbordsfokus. Om en skip-länk pekar på ett icke-existerande ID, eller om målelementet inte är fokuserbart (saknar etttabindex-attribut när det är ett icke-interaktivt element), flaggar regeln en överträdelse. Detta fångar det vanliga misstaget att lägga till en skip-länk i HTML men glömma att lägga till motsvarandeid-attribut på huvudinnehållselementet. - tabindex: Denna regel flaggar element med
tabindex-värden större än 0, vilket skapar en anpassad tabb-ordning som avviker från den naturliga DOM-ordningen. Medantabindex='0'är legitimt och nödvändigt för att göra icke-interaktiva element fokuserbara (såsom ett skip-länksmål<div>), stör användning avtabindex='1',tabindex='2'och så vidare den förväntade Tab-sekvensen över hela sidan, vilket kan göra bypass-mekanismer oförutsägbara eller ineffektiva. Automatiserade verktyg kan upptäcka förekomsten av positivatabindex-värden, men en mänsklig testare måste verifiera om den resulterande tabb-ordningen är logisk och om skip-länken förblir det första fokuserbara elementet i sekvensen.
Hur man testar
- Automatisk skanning: Kör axe DevTools (webbläsartillägg) eller Lighthouse (Chrome DevTools > Lighthouse > Accessibility) på sidan. Titta specifikt efter överträdelser under reglerna
bypass,skip-linkochtabindex. I axe DevTools, filtrera resultaten efter dessa regel-ID:n. I Lighthouse, kontrollera avsnittet "Navigation" i tillgänglighetsgranskningen. Notera alla objekt markerade "Needs Review" — axe markerar vissa bypass-kontroller som kräver manuell bekräftelse. - Tangentbordstest (alla webbläsare): Öppna sidan i en webbläsare utan att någon skärmläsare är aktiv. Tryck på Tab en gång. Bekräfta att det allra första fokuserade elementet är en skip-länk (den kan nu visas visuellt om den tidigare var utanför skärmen). Tryck på Enter för att aktivera skip-länken. Bekräfta att tangentbordsfokus har flyttats till huvudinnehållsområdet — nästa Tab-tryckning ska nå det första interaktiva elementet inne i huvudinnehållet, inte den första navigationslänken. Om fokus inte flyttas är skip-länken trasig.
- NVDA + Firefox: Starta NVDA och öppna sidan i Firefox. Tryck på kortkommandot Insert+F7 för att öppna Elements List och kontrollera landmarks. Alternativt, tryck på D för att hoppa mellan landmark-regioner och bekräfta att en
main-landmark finns och är tydligt etiketterad. Tryck på H för att navigera efter rubriker och verifiera att rubrikstrukturen gör sidans sektioner identifierbara. Tabba till skip-länken och aktivera den med Enter, bekräfta sedan att NVDA annonserar innehåll inifrån main-regionen. - VoiceOver + Safari (macOS/iOS): Aktivera VoiceOver (Command+F5 på Mac). Använd Rotor (Control+Option+U) för att öppna Landmarks-menyn och verifiera att namngivna landmark-regioner visas. Tabba till skip-länken och tryck Enter; bekräfta att VoiceOver läser upp innehåll från huvudinnehållsområdet direkt efter aktivering. På iOS, använd Rotor-gesten för att växla till Landmarks och svep genom dem.
- JAWS + Chrome: Med JAWS aktivt, tryck på Q för att hoppa direkt till main-landmarken. Verifiera att JAWS annonserar att du går in i main-regionen. Använd Insert+F3 för att lista landmarks och bekräfta lämpliga etiketter. Tabba från sidans början och verifiera att skip-länken annonseras först, med ett tillgängligt namn som "Skip to main content."
- Verifiering av fokuseringsmål: Inspektera skip-länkens
href-värde (t.ex.#main-content). Använd webbläsarens utvecklarverktyg för att bekräfta att ett element medid='main-content'finns i DOM:en. Om det elementet är en<div>eller annan icke-interaktiv behållare, bekräfta att det hartabindex='-1'för att göra det programmässigt fokuserbart utan att lägga in det i tabb-ordningen.
Hur man åtgärdar
Saknad skip-länk — Felaktigt
<!-- Navigation appears first with no bypass mechanism -->
<div class='nav-wrapper'>
<a href='/home'>Home</a>
<a href='/about'>About</a>
<a href='/services'>Services</a>
<a href='/contact'>Contact</a>
</div>
<div class='content'>
<h1>Welcome</h1>
<p>Page content here.</p>
</div>
Saknad skip-länk — Korrekt
<!-- Skip link is the first focusable element; visually hidden until focused -->
<a href='#main-content' class='skip-link'>Skip to main content</a>
<nav aria-label='Primary navigation'>
<a href='/home'>Home</a>
<a href='/about'>About</a>
<a href='/services'>Services</a>
<a href='/contact'>Contact</a>
</nav>
<!-- tabindex='-1' allows the div to receive programmatic focus without
entering the natural tab order -->
<main id='main-content' tabindex='-1'>
<h1>Welcome</h1>
<p>Page content here.</p>
</main>
Skip-länk med icke-existerande mål — Felaktigt
<!-- The skip link exists but points to an ID that is not in the DOM -->
<a href='#content' class='skip-link'>Skip to main content</a>
<nav>...navigation links...</nav>
<!-- The id here is 'main', not 'content' — the skip link target is broken -->
<div id='main'>
<h1>Page Title</h1>
</div>
Skip-länk med icke-existerande mål — Korrekt
<!-- href value exactly matches the id of the target element -->
<a href='#main-content' class='skip-link'>Skip to main content</a>
<nav>...navigation links...</nav>
<!-- id matches the href fragment; tabindex='-1' ensures focus is received -->
<main id='main-content' tabindex='-1'>
<h1>Page Title</h1>
</main>
Skip-länk permanent dold — Felaktigt
<!-- display:none removes the element from the accessibility tree entirely -->
<a href='#main-content' style='display:none'>Skip to main content</a>
<!-- visibility:hidden also hides from screen readers and keyboard -->
<a href='#main-content' style='visibility:hidden'>Skip to main content</a>
Skip-länk permanent dold — Korrekt
<!-- CSS moves the link off-screen visually but keeps it in the tab order.
On :focus, it becomes visible so sighted keyboard users can see it. -->
<style>
.skip-link {
position: absolute;
left: -9999px;
top: auto;
width: 1px;
height: 1px;
overflow: hidden;
}
.skip-link:focus {
position: static;
width: auto;
height: auto;
overflow: visible;
}
</style>
<a href='#main-content' class='skip-link'>Skip to main content</a>
Ingen landmark-struktur — Felaktigt
<!-- Generic divs with no semantic role — screen readers cannot identify regions -->
<div class='header'>...logo and nav...</div>
<div class='sidebar'>...secondary links...</div>
<div class='page-body'>...main content...</div>
<div class='footer'>...footer links...</div>
Ingen landmark-struktur — Korrekt
<!-- HTML5 semantic elements expose landmark roles to assistive technologies.
Multiple nav elements are distinguished with aria-label. -->
<header>
<nav aria-label='Primary navigation'>...main nav links...</nav>
</header>
<aside aria-label='Related resources'>...secondary links...</aside>
<main id='main-content' tabindex='-1'>...main content...</main>
<footer>
<nav aria-label='Footer navigation'>...footer links...</nav>
</footer>
Vanliga misstag
- Att dölja skip-länken med
display:noneellervisibility:hiddenistället för en off-screen CSS-teknik, vilket tar bort den både från den visuella visningen och från tillgänglighetsträdet, och gör den helt icke-funktionell för alla användare. - Att lägga till en skip-länk med
href='#main-content'men utelämna det matchandeid='main-content'-attributet på målelementet, vilket gör att länken inte gör någonting när den aktiveras. - Att peka skip-länken mot ett icke-interaktivt behållarelement (såsom en
<div>eller<section>) utan att lägga tilltabindex='-1', vilket innebär att webbläsare rullar vyn men inte flyttar tangentbordsfokus till målet. - Att placera skip-länken någon annanstans än som det allra första fokuserbara elementet i DOM:en — till exempel efter logotypen eller efter den första navigationslänken — vilket motverkar dess syfte eftersom användare fortfarande måste tabba förbi innehåll för att nå den.
- Att använda positiva
tabindex-värden (t.ex.tabindex='1') någonstans på sidan, vilket organiserar om tabb-ordningen på oförutsägbara sätt och kan flytta skip-länken från dess förväntade första position. - Att bara inkludera en enda icke-namngiven
<nav>-landmark när sidan har flera navigationsregioner (primär navigering, brödsmulor, sidfotnavigering), vilket gör det omöjligt för skärmläsaranvändare att skilja mellan dem med hjälp av landmark-genvägar. - Att enbart förlita sig på landmark-struktur utan att tillhandahålla en skip-länk, i tron att alla skärmläsaranvändare känner till och använder landmark-genvägar — seende tangentbordsanvändare som inte använder skärmläsare har ingen nytta av enbart landmarks och är beroende av en synlig skip-länk.
- Att kapsla in hela sidkroppen i ett enda
<main>-element som inkluderar navigering, headers och footers, istället för att begränsa<main>till sidans unika innehåll. - Att använda
role='navigation'på en<div>som innehåller navigering utan att tillhandahålla ettaria-labelnär flera navigationslandmarks finns, vilket gör att skärmläsare bara annonserar "navigation" utan möjlighet att skilja regionerna åt. - Att implementera skip-länken korrekt i en statisk HTML-prototyp men tappa bort den under JavaScript-ramverksrendering (t.ex. React, Angular, Vue) eftersom skip-länkskomponenten inte inkluderas i root-layouten eller tas bort villkorligt under klient-side-hydrering.
Relation till Turkiets tillgänglighetsföreskrifter
Turkiets Presidential Circular 2025/10, publicerad i Official Gazette nr 32933 den 21 juni 2025, fastställer obligatoriska krav på webb- och mobiltillgänglighet baserade på WCAG 2.1 nivå AA och WCAG 2.2 nivå A-konformitetsstandarder. WCAG 2.4.1 Bypass Blocks är ett kriterium på nivå A, vilket placerar det bland de mest grundläggande kraven enligt cirkuläret — vilket innebär att det representerar den baslinje under vilken inga omfattade aktörers digitala tjänster får ligga.
Cirkuläret omfattar ett brett spektrum av offentliga och privata aktörer. Offentliga institutioner — inklusive ministerier, kommuner, statliga myndigheter och statligt anslutna organ — måste uppnå full konformitet inom ett år från cirkulärets ikraftträdande. Privata aktörer som omfattas av regleringen har ett tvåårigt efterlevnadsfönster. Omfattade privata kategorier inkluderar e-handelsplattformar, banker och finansiella institutioner, sjukhus och vårdgivare, telekomoperatörer med 200,000 eller fler abonnenter, resebyråer, privata transportföretag och privatskolor auktoriserade av Ministry of National Education (MoNE).
För dessa aktörer innebär en underlåtenhet att implementera WCAG 2.4.1 att deras webbplatser inte uppfyller kraven på den mest grundläggande nivån i standarden. En myndighetsportal, en internetbank, ett system för sjukhustidsbokning eller ett kassaflöde för e-handel som saknar en fungerande skip navigation-mekanism står i direkt strid med cirkulärets krav. Med tanke på att tangentbordsnavigering är grundläggande för användare med motoriska funktionsnedsättningar och att skärmläsaranvändbarhet är starkt beroende av landmark-struktur, har detta kriterium stor tyngd i tillgänglighetsrevisioner och regulatoriska bedömningar.
Organisationer som genomför interna tillgänglighetsrevisioner eller beställer tredjepartsutvärderingar som förberedelse för efterlevnad bör behandla WCAG 2.4.1 som en förstahandsfråga — en av de enklaste åtgärderna att implementera och en av de mest betydelsefulla för användare som är beroende av tangentbords- och hjälpmedelsteknikåtkomst. Underlåtenhet att åtgärda det kan särskilt nämnas i regulatoriska granskningar som en grundläggande bristande konformitet, vilket potentiellt kan påverka en organisations övergripande efterlevnadsstatus enligt cirkuläret.
