WCAG framgångskriterier · Level A
WCAG 2.4.3: Fokusordning
WCAG 2.4.3 kräver att om en webbsida kan navigeras sekventiellt och navigeringssekvenserna påverkar betydelse eller funktion, måste fokuserbara komponenter få fokus i en ordning som bevarar betydelse och användbarhet. Detta kriterium är avgörande för tangentbordsanvändare och användare av hjälpmedel som är beroende av en logisk, förutsägbar fokussekvens för att förstå och interagera med innehållet.
Vad den här regeln innebär
WCAG 2.4.3 Focus Order är ett framgångskriterium på nivå A under principen Operable. Det säger: "If a Web page can be navigated sequentially and the navigation sequences affect meaning or operation, focusable components receive focus in an order that preserves meaning and operability."
I praktiska termer betyder detta att när en användare trycker på Tabb-tangenten för att gå igenom interaktiva element på en sida — länkar, knappar, formulärfält, anpassade widgets och alla andra fokuserbara komponenter — måste sekvensen i vilken dessa element får fokus vara logiskt begriplig. Användare ska inte plötsligt hoppa från mitten av ett formulär till en länk i sidfoten, sedan tillbaka till en knapp i en modal, och därefter vidare till ett objekt i navigationsmenyn.
Kriteriet gäller sekventiell tangentbordsnavigering, som är det primära sättet tangentbordsanvändare och skärmläsaranvändare tar sig fram på en sida. DOM-ordningen är standardkällan för fokusordning i webbläsare: element dyker upp i tabbsekvensen i den ordning de förekommer i Document Object Model (DOM), om inte CSS eller JavaScript medvetet ändrar den ordningen. Problem uppstår när den visuella layouten avviker från DOM-ordningen (till exempel genom omordning med CSS Flexbox eller Grid), eller när tabindex-värden påtvingar en onaturlig sekvens.
Vad som räknas som godkänt: Fokusordningen måste vara logisk och meningsfull — inte nödvändigtvis identisk med den visuella läsordningen, men tillräckligt sammanhängande för att användare ska kunna förstå och använda sidan. En modal dialog som flyttar fokus till sig själv när den öppnas, håller fokus instängt i sig medan den är öppen och återför fokus till det element som öppnade den när den stängs, uppfyller detta kriterium. Ett flerstegsformulär där Tabb går igenom varje fält i den ordning en användare skulle fylla i dem (uppifrån och ned, från vänster till höger i språk som läses från vänster till höger) är också godkänt.
Vad som räknas som underkänt: Att fokus hoppar från ett inloggningsformulärs fält "Username" till en helt orelaterad reklambanner innan det når fältet "Password" är underkänt. En single-page-applikation som öppnar en dialog men lämnar fokus på bakgrundssidan är underkänd. Att använda positiva heltalsvärden för tabindex (t.ex. tabindex='2', tabindex='5') som tvingar fram en ologisk tabbsekvens över sidan är underkänt.
Officiella undantag: WCAG anger uttryckligen att fokusordningen inte behöver matcha den visuella läsordningen så länge den bevarar mening och användbarhet. Det finns också ett undantag för fall där navigationssekvenser inte påverkar mening eller funktion — till exempel en sida med endast ett fokuserbart element, där det inte finns någon sekvens att utvärdera. Dessutom, när det finns flera giltiga ordningar som alla bevarar mening, är vilken som helst av dessa ordningar acceptabel.
Centrala HTML- och JavaScript-mekanismer som påverkar fokusordningen inkluderar: den naturliga DOM-ordningen för interaktiva element, attributet tabindex (särskilt positiva heltalsvärden), CSS-egenskaper som ändrar den visuella layouten utan att ändra DOM (såsom order i Flexbox/Grid, position: absolute och float), JavaScript-styrd fokushantering (anrop av .focus() på element) och ARIA-dialogmönster som kräver explicit fokushantering.
Varför det är viktigt
Fokusordning är inte en liten teknisk detalj — det är den navigationsmässiga ryggraden på webben för en betydande del av användarna. Flera olika grupper av personer med funktionsnedsättning är beroende av en logisk fokussekvens för att kunna använda digitala produkter effektivt.
Användare med motoriska funktionsnedsättningar som inte kan använda mus är helt beroende av tangentbordet (eller tangentbordsekvivalenta hjälpmedel som sip-and-puff-brytare, huvudpekare eller ögonstyrningssystem) för att navigera. För dessa användare är en rörig fokusordning inte bara besvärlig — den kan göra en sida helt oanvändbar. Om Tabb-tangenten tar en användare till fel del av sidan kan de sakna ett effektivt sätt att nå den kontroll de behöver, och de kan inte bara flytta handen och klicka någon annanstans.
Blinda användare och användare med nedsatt syn som använder skärmläsare som NVDA, JAWS eller VoiceOver hör element annonseras när fokus hamnar på dem. En logisk fokusordning innebär att ljudströmmen de får återspeglar gränssnittets avsedda flöde. När fokus hoppar ryckigt tappar användarna sin mentala modell av var de befinner sig på sidan. Enligt Världshälsoorganisationen har cirka 2,2 miljarder människor världen över någon form av synnedsättning, och för många av dem som använder skärmläsare är fokusordningen deras primära sätt att uppleva sidans struktur.
Användare med kognitiva funktionsnedsättningar gynnas också av förutsägbara fokussekvenser. Ett oväntat fokushopp mitt i ett formulär kan orsaka förvirring, tvinga användare att starta arbetsflöden på nytt eller göra att de missar obligatoriska fält. Användare med uppmärksamhetssvårigheter eller nedsatt korttidsminne behöver konsekvent, förutsägbar navigering för att bygga upp trygghet i att använda en webbplats.
Ett konkret scenario från verkligheten: Föreställ dig en turkisk e-handelskassa. Den visuella designen använder CSS Grid för att placera ordersammanfattningen till vänster och betalningsformuläret till höger. I DOM däremot kommer betalningsformuläret först och ordersammanfattningen sedan. Den visuella layouten ser korrekt ut för seende musanvändare, men en tangentbordsanvändare som trycker på Tabb hamnar i betalningsformulärets fält innan hen har haft möjlighet att granska ordersammanfattningen. Hen kan omedvetet bekräfta en felaktig beställning. Än värre, om en knapp "Confirm Purchase" får fokus före ett fält "Apply Coupon" på grund av felaktig hantering av positiva tabindex-värden, kan en användare av misstag genomföra ett köp som hen avsåg att rabattera. Detta är en direkt, verklig ekonomisk konsekvens av en trasig fokusordning.
Utöver tillgänglighet förbättrar en logisk fokusordning upplevelsen för power users som föredrar tangentbordsnavigering för snabbhet. Den stödjer också indirekt SEO: en välstrukturerad DOM som ger en naturlig fokusordning tenderar att spegla meningsfull semantisk markup, som sökmotorer använder för att förstå innehållshierarki och betydelse.
Relaterade Axe-core-regler
WCAG 2.4.3 kräver manuell testning för en definitiv utvärdering. Automatiserade verktyg som axe-core kan inte algoritmiskt avgöra om en viss fokussekvens "preserves meaning and operability" — den bedömningen kräver en människa som förstår sidans syfte och innehållsrelationer. Däremot kan axe-core och relaterade verktyg flagga vissa mönster som är starka indikatorer på problem med fokusordningen:
- tabindex (positiva värden) — heuristisk flagga: Vissa lint- och granskningsverktyg varnar när element har positiva heltalsvärden för
tabindex(alla värden större än 0). Positiva tabindex-värden åsidosätter den naturliga DOM-ordningen och placerar dessa element först i tabbsekvensen, vilket nästan alltid skapar en ologisk och oförutsägbar fokusordning. Även om axe-core:s kärnregeluppsättning inte innehåller en dedikerad automatiserad "focus-order"-regel (eftersom den logiska korrektheten i sekvensen inte kan beräknas), kontrollerar verktyg som axe DevTools Pro och manuella revisioner specifikt användningen av positiva tabindex-värden som en proxyindikator. - scrollable-region-focusable: Axe-core innehåller en regel som flaggar rullningsbara regioner som inte kan få tangentbordsfokus. Även om det inte direkt är en fokusordningsregel, bryter en rullningsbar region som inte kan få fokus den övergripande navigationssekvensen, vilket gör att tangentbordsanvändare hoppar över innehåll de behöver interagera med.
- Manuell inspektion av CSS-omordnat innehåll: Automatiserade verktyg kan inte upptäcka när CSS Flexbox-
ordereller Grid-placering skapar en mismatch mellan visuell ordning och DOM-ordning. En mänsklig testare måste visuellt jämföra layouten på skärmen med fokussekvensen som observeras under tangentbordsnavigering. Detta är den vanligaste källan till 2.4.3-fel i moderna responsiva designer och är helt osynligt för automatiska skannrar. - Manuell inspektion av JavaScript-fokushantering i dynamiskt innehåll: Single-page-applikationer, implementationer av oändlig rullning, modaler och utfällbara menyer kräver alla JavaScript för att flytta fokus på ett lämpligt sätt när innehållet ändras. Automatiserade verktyg kör en statisk ögonblicksbild av DOM och kan inte simulera den sekvens av användarinteraktioner som behövs för att trigga dessa fokushanteringsscenarier. Endast manuell tangentbordstestning kan verifiera att fokus flyttas till en nyöppnad modal, återgår till rätt trigger vid stängning och inte lämnar användaren strandsatt i ett otillgängligt bakgrundslager.
Hur man testar
- Automatisk skanning som startpunkt: Kör axe DevTools (webbläsartillägg) eller Google Lighthouse på sidan. Leta efter varningar om positiva
tabindex-värden och flaggade rullningsbara regioner. Observera att ett rent automatiserat resultat inte betyder att 2.4.3 är uppfyllt — manuell testning krävs alltid. Dokumentera alla flaggade problem för vidare utredning. - Koppla bort musen och navigera endast med Tabb: Börja från webbläsarens adressfält eller toppen av sidan och tryck upprepade gånger på Tabb för att gå igenom alla fokuserbara element. Observera sekvensen noggrant. Fråga dig själv: rör sig fokus i en ordning som matchar sidans logiska läs- och interaktionsflöde? Hoppar fokus någonsin till ett oväntat område? Blir det någonsin instängt (oförmöget att gå framåt eller bakåt) förutom i en avsiktlig dialog?
- Testa dynamiska komponenter: Aktivera alla modaler, dialoger, rullgardinsmenyer, accordions, flikpaneler, datumväljare eller andra interaktiva widgets med tangentbordet. Verifiera att fokus flyttas in i det nyss visade innehållet omedelbart vid aktivering. Efter att en dialog stängts, bekräfta att fokus återgår till det element som öppnade dialogen — inte till toppen av sidan eller någon godtycklig plats.
- Testa med NVDA + Firefox: Öppna NVDA, starta Firefox och navigera till sidan. Använd Tabb för att gå igenom interaktiva element och lyssna på annonseringarna. Verifiera att den annonserade sekvensen är kontextuellt begriplig. Använd NVDA:s Browse Mode (piltangenter) för att läsa igenom statiskt innehåll och bekräfta att läsordningen stämmer överens med fokusordningen för interaktiva element inom det innehållet.
- Testa med VoiceOver + Safari (macOS/iOS): Aktivera VoiceOver och använd Tabb (desktop) eller svepgester (iOS) för att gå igenom fokuserbara element. Bekräfta att fokussekvensen är logisk. På iOS, testa att modaler och överlägg fångar fokus korrekt och återför fokus vid stängning.
- Testa med JAWS + Chrome: Använd JAWS tabbnavigering och bekräfta att den annonserade fokussekvensen är sammanhängande. Använd JAWS virtuella markör för att korsreferera läsordningen med den interaktiva fokusordningen och identifiera eventuella avvikelser.
- Inspektera DOM jämfört med visuell layout: Öppna webbläsarens DevTools och granska DOM-strukturen. Jämför ordningen på interaktiva element i DOM med deras visuella position på skärmen. Om CSS-egenskaper som
order,position: absoluteellerfloatskapar betydande skillnader, följ tabbsekvensen manuellt för att avgöra om mening eller användbarhet påverkas. - Kontrollera tabindex-värden i DOM: Kör
document.querySelectorAll('[tabindex]')i webbläsarkonsolen för att lista alla element med explicita tabindex-attribut. Undersök alla element med ett positivt heltalsvärde och bedöm om deras placering i den modifierade tabbordningen är logisk.
Hur man åtgärdar
Positiva tabindex-värden som skapar ologisk ordning — Felaktigt
<!-- Positive tabindex values force an unnatural tab sequence -->
<form>
<label for='email'>Email</label>
<input type='email' id='email' tabindex='3'>
<label for='name'>Full Name</label>
<input type='text' id='name' tabindex='1'>
<label for='phone'>Phone</label>
<input type='tel' id='phone' tabindex='2'>
<button type='submit' tabindex='4'>Submit</button>
</form>
<!-- Tab order: Full Name → Phone → Email → Submit
Visual/logical order: Email → Full Name → Phone → Submit
This mismatch breaks focus order. -->
Positiva tabindex-värden som skapar ologisk ordning — Korrekt
<!-- Remove all positive tabindex values; rely on DOM order.
Rearrange DOM to match the logical sequence. -->
<form>
<label for='email'>Email</label>
<input type='email' id='email'>
<label for='name'>Full Name</label>
<input type='text' id='name'>
<label for='phone'>Phone</label>
<input type='tel' id='phone'>
<button type='submit'>Submit</button>
</form>
<!-- Tab order now follows DOM order: Email → Full Name → Phone → Submit
Matches logical and visual order. No tabindex needed. -->
CSS-visuell omordning som inte matchar DOM-ordning — Felaktigt
<!-- DOM has sidebar first, main content second.
CSS uses flexbox order to visually flip them.
Keyboard users tab through sidebar links before main content links,
which does not match what a sighted user sees first. -->
<style>
.layout { display: flex; }
.sidebar { order: 2; } /* Visually shown on the right */
.main { order: 1; } /* Visually shown on the left */
</style>
<div class='layout'>
<nav class='sidebar'>
<a href='/about'>About</a>
<a href='/contact'>Contact</a>
</nav>
<main class='main'>
<a href='/article'>Read Article</a>
</main>
</div>
<!-- Focus order: About → Contact → Read Article
Visual order: Read Article → About → Contact
Mismatch breaks 2.4.3 -->
CSS-visuell omordning som inte matchar DOM-ordning — Korrekt
<!-- Fix: reorder the DOM to match the intended visual and logical order.
Remove the CSS 'order' overrides that caused the mismatch. -->
<style>
.layout { display: flex; }
/* No 'order' overrides — DOM order determines both visual and tab order */
</style>
<div class='layout'>
<main class='main'>
<a href='/article'>Read Article</a>
</main>
<nav class='sidebar'>
<a href='/about'>About</a>
<a href='/contact'>Contact</a>
</nav>
</div>
<!-- DOM order, visual order, and focus order now all match. -->
Modal dialog som inte hanterar fokus — Felaktigt
<!-- Button opens a modal, but focus stays on the background page.
Keyboard users cannot interact with the dialog. -->
<button id='open-modal' onclick='document.getElementById("dialog").style.display="block"'>
Open Settings
</button>
<div id='dialog' style='display:none;'>
<h2>Settings</h2>
<label for='theme'>Theme</label>
<select id='theme'>
<option>Light</option>
<option>Dark</option>
</select>
<button id='close-modal'>Close</button>
</div>
<!-- When dialog opens, focus remains on #open-modal in the background.
Tab continues to background page elements, not dialog elements. -->
Modal dialog som inte hanterar fokus — Korrekt
<!-- Focus is moved into the dialog on open and returned to trigger on close.
role='dialog' and aria-modal='true' inform screen readers of the context. -->
<button id='open-modal'>Open Settings</button>
<div id='dialog'
role='dialog'
aria-modal='true'
aria-labelledby='dialog-title'
style='display:none;'>
<h2 id='dialog-title'>Settings</h2>
<label for='theme'>Theme</label>
<select id='theme'>
<option>Light</option>
<option>Dark</option>
</select>
<button id='close-modal'>Close</button>
</div>
<script>
const openBtn = document.getElementById('open-modal');
const dialog = document.getElementById('dialog');
const closeBtn = document.getElementById('close-modal');
openBtn.addEventListener('click', () => {
dialog.style.display = 'block';
// Move focus to first focusable element in dialog
document.getElementById('theme').focus();
});
closeBtn.addEventListener('click', () => {
dialog.style.display = 'none';
// Return focus to the element that triggered the dialog
openBtn.focus();
});
</script>
<!-- Focus order is now logical: trigger → dialog contents → back to trigger. -->
Vanliga misstag
- Att använda positiva heltalsvärden för
tabindex(t.ex.tabindex='1',tabindex='5') för att "styra" fokusordningen i stället för att korrigera DOM-strukturen. Positiva tabindex-värden placerar element före alla naturligt fokuserbara element på sidan, vilket skapar en kaotisk global tabbsekvens som är extremt svår att underhålla och nästan alltid introducerar fel. - Att använda CSS-
orderi Flexbox eller CSS Grid för att visuellt omordna innehåll utan att omordna DOM och sedan underlåta att testa tangentbordsnavigering. Den visuella layouten ser korrekt ut för seende användare, men tabbsekvensen följer DOM-ordningen, inte den visuella ordningen — en osynlig men allvarlig avvikelse för tangentbordsanvändare. - Att öppna en modal eller dialog utan att programmässigt flytta fokus in i den med JavaScripts
.focus()-metod. Skärmläsar- och tangentbordsanvändare blir kvar i bakgrundsinnehållet och kan ofta inte hitta eller interagera med dialogen alls. - Att inte återföra fokus till det element som öppnade en modal, panel eller rullgardinsmeny efter stängning. Att återföra fokus till toppen av sidan eller lämna det på ett nu dolt element tvingar användare att navigera om från början och tappar deras position på en potentiellt lång sida.
- Att infoga dynamiskt inläst innehåll (t.ex. ett inline-felmeddelande, en toast-notis eller en lazy-loadad sektion) i DOM efter fokuserbara element som föregår det visuellt, så att tangentbordsanvändare stöter på det nya innehållet i fel ordning eller inte alls.
- Att använda
tabindex='-1'för att ta bort element från tabbsekvensen utan att erbjuda ett alternativt sätt att nå dem med tangentbord. Även omtabindex='-1'i sig är ett giltigt verktyg (det gör ett element programmässigt fokuserbart men tar bort det från den naturliga tabbordningen), innebär felaktig användning på kontroller som användare faktiskt behöver nå att dessa kontroller i praktiken göms för tangentbordsanvändare. - Att bygga single-page-applikationers routövergångar så att fokus återställs till dokumentets body eller webbläsarchrome i stället för att flytta fokus till den nya sidrubriken eller ett hoppa-till-innehåll-landmärke. Användare tvingas då tabba genom hela navigeringen vid varje routbyte.
- Att implementera anpassade karusell- eller slider-widgets där piltangentsnavigering inte är implementerad och Tabb flyttar fokus genom varje dold slide, vilket tvingar användare att tabba genom dussintals element utanför skärmen innan de når efterföljande sidinnehåll.
- Att placera en "osynlig" hoppa-till-navigering-länk i DOM som alltid har
display:none(i stället för att vara visuellt dold med en.sr-only/ clip-teknik). En länk meddisplay:nonetas helt bort från tabbordningen och ger ingen nytta, medan en korrekt implementerad hoppa-länk får fokus vid Tabb och blir synlig, vilket direkt stödjer ett logiskt fokusflöde till huvudinnehållet. - Att nästla interaktiva element inuti andra interaktiva element (till exempel en
<button>inuti en<a>-tagg), vilket ger inkonsekvent tabb-beteende mellan webbläsare och kan göra att fokus landar på samma logiska kontroll flera gånger eller hoppar över den helt.
Relation till Turkiets tillgänglighetsreglering
WCAG 2.4.3 Focus Order är direkt relevant för Turkiets banbrytande tillgänglighetslagstiftning: Presidential Circular 2025/10, publicerad i Official Gazette nr 32933 den 21 juni 2025. Detta cirkulär fastställer obligatoriska webbtillgänglighetsstandarder för ett brett spektrum av offentliga och privata aktörer verksamma i Turkiet och kräver överensstämmelse med internationellt erkända riktlinjer — inklusive alla WCAG 2.x-framgångskriterier på nivå A, där 2.4.3 är ett av dem.
Cirkuläret omfattar en bred uppsättning aktörstyper. Offentliga institutioner — inklusive ministerier, kommuner, statliga universitet och myndigheter — måste uppnå full överensstämmelse inom ett år från cirkulärets publiceringsdatum. Privata aktörer i omfattade kategorier måste nå samma överensstämmelsenivå inom två år. De omfattade privata kategorierna inkluderar e-handelsplattformar, banker och finansiella institutioner, sjukhus och privata vårdgivare, telekomföretag med 200,000 eller fler abonnenter, resebyråer, privata transportföretag och privatskolor som verkar med tillstånd från Ministry of National Education (MoNE).
För alla dessa organisationer är en trasig eller ologisk fokusordning inte bara en brist i användbarhet — det är en regulatorisk bristande efterlevnad som kan utsätta aktören för juridiska och administrativa konsekvenser enligt cirkulärets sanktionsbestämmelser. Föreställ dig en turkisk banks internetbank där fokusordningen på skärmen för överföring av medel hoppar från beloppsfältet till bekräftelseknappen och passerar fältet för mottagarens IBAN. En tangentbordsanvändare — kanske en kund med motorisk funktionsnedsättning — kan oavsiktligt initiera en överföring utan att korrekt fylla i alla obligatoriska fält. Detta scenario utgör samtidigt ett WCAG 2.4.3-fel, ett brott mot cirkulärets krav och en potentiellt allvarlig ekonomisk skada för användaren.
På samma sätt skulle en e-handelssajt som omfattas av cirkuläret och som använder CSS Grid-omordning för att visa en visuellt tilltalande produktsida, men vars tabbsekvens hoppar från produktbilder till sidfotslänkar innan den når knappen "Add to Cart", stå i direkt strid med 2.4.3 och därmed vara icke-förenlig med cirkuläret. Tidsfristerna på ett respektive två år innebär att organisationer bör behandla åtgärdande av fokusordning som en prioritet i sina tillgänglighetsplaner — inte som en uppskjuten förbättring. Eftersom problem med fokusordning ofta härrör från arkitektoniska beslut om DOM-struktur och JavaScript-interaktionsmönster är det avsevärt mindre kostsamt att hantera dem tidigt i utvecklingsprocessen än att bygga om dem i efterhand.
Accsible:s overlay-SDK stödjer organisationer på deras väg mot efterlevnad genom att tillhandahålla konfigurerbara förbättringar av fokushantering, men det är viktigt att notera att overlay-lösningar fungerar bäst tillsammans med — inte i stället för — korrekt semantisk HTML-struktur och ansvarsfull fokushantering i applikationens egen kodbas. Att uppnå hållbar, reviderbar överensstämmelse med Presidential Circular 2025/10 kräver att den underliggande produkten uppfyller 2.4.3 genom korrekta utvecklingspraxis.
