aria-selected och tabbönster
Implementera tangentbordstillgängliga flikgränssnitt
aria-selected och tabbönster är en gratis lektion i HTML Academy på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för HTML Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i HTML Academy innehåller totalt 4 lektioner.
Översikt över flikmönstret
Ett flikgränssnitt har tre ARIA-komponenter:
role="tablist"– behållare för alla flikarrole="tab"– en enskild flikknapprole="tabpanel"– innehållspanelen för varje flik
ARIA-struktur för flikar
Komplett tillgänglig uppmärkning för flikar:
<div role="tablist" aria-label="Account Settings">
<button role="tab" id="tab-1" aria-selected="true"
aria-controls="panel-1">Profile</button>
<button role="tab" id="tab-2" aria-selected="false"
aria-controls="panel-2" tabindex="-1">Security</button>
<button role="tab" id="tab-3" aria-selected="false"
aria-controls="panel-3" tabindex="-1">Notifications</button>
</div>
<div id="panel-1" role="tabpanel" aria-labelledby="tab-1">
Profile content...
</div>
<div id="panel-2" role="tabpanel" aria-labelledby="tab-2" hidden>
Security content...
</div>aria-selected
aria-selected anger det aktuella aktiva objektet i ett urvalssammanhang:
<!-- In a tablist: -->
<button role="tab" aria-selected="true">Active Tab</button>
<button role="tab" aria-selected="false">Other Tab</button>
<!-- In a listbox: -->
<ul role="listbox">
<li role="option" aria-selected="false">Option 1</li>
<li role="option" aria-selected="true">Option 2</li>
</ul>Tangentbordsmönster för flikar
ARIA-mönster definierar ett specifikt tangentbordsbeteende för flikar:
- Tab – flyttar fokus till den valda fliken i tablistan
- Piltangenter – växlar mellan flikarna
- Tab igen – flyttar fokus från tablistan till den aktiva panelen
- Home – första fliken
- End – sista fliken
Implementera tangentbordsstöd för flikar
Tangentbordsnavigering för flikar med piltangenter:
const tabs = document.querySelectorAll('[role="tab"]');
tabs.forEach((tab, i) => {
tab.addEventListener('keydown', (e) => {
let target;
if (e.key === 'ArrowRight') target = tabs[(i + 1) % tabs.length];
if (e.key === 'ArrowLeft') target = tabs[(i - 1 + tabs.length) % tabs.length];
if (e.key === 'Home') target = tabs[0];
if (e.key === 'End') target = tabs[tabs.length - 1];
if (target) {
activateTab(target);
target.focus();
}
});
});Funktionen activateTab
Funktion för att byta flik och uppdatera ARIA:
function activateTab(selectedTab) {
// Deactivate all tabs:
document.querySelectorAll('[role="tab"]').forEach(tab => {
tab.setAttribute('aria-selected', 'false');
tab.setAttribute('tabindex', '-1');
document.getElementById(tab.getAttribute('aria-controls')).hidden = true;
});
// Activate selected tab:
selectedTab.setAttribute('aria-selected', 'true');
selectedTab.setAttribute('tabindex', '0');
document.getElementById(selectedTab.getAttribute('aria-controls')).hidden = false;
}Mönstret roving tabindex
Flikgrupper använder roving tabindex för att hålla en flik i tabbordningen:
<!-- Only the selected tab has tabindex=0 -->
<button role="tab" aria-selected="true" tabindex="0">Active</button>
<button role="tab" aria-selected="false" tabindex="-1">Other</button>
<button role="tab" aria-selected="false" tabindex="-1">Another</button>
<!-- When user arrows to a new tab:
1. Set new tab tabindex=0
2. Set old tab tabindex=-1
3. Focus new tab -->aria-selected jämfört med aria-checked
aria-selected jämfört med aria-checked – olika sammanhang:
aria-selected– används i urvalskomponenter: flikar, alternativ i listboxar och objekt i trädaria-checked– används för valbara objekt: kryssrutor och menyalternativ med en bockmarkering
Fokus i tabpanel
När en flik aktiveras blir panelen synlig, men fokus stannar på fliken:
// Users can then Tab to move into the panel content
// The panel should not automatically receive focus
// Exception: if the panel is very long, consider moving focus
// to the panel heading for long-form content tabs
// Panel should have tabindex=-1 for programmatic focus:
<div id="panel-1" role="tabpanel" aria-labelledby="tab-1" tabindex="-1">Automatisk eller manuell aktivering
Två modeller för flikaktivering:
- Automatisk – flikarna aktiveras när användaren navigerar genom dem med piltangenterna (enklare användarupplevelse)
- Manuell – användaren måste trycka på Enter eller Blanksteg för att aktivera fliken efter navigering med piltangenterna (bättre när flikinnehållet måste laddas)
Tillgänglig styling för flikar
CSS för tillgängligt valt läge för flikar:
[role="tab"] {
border-bottom: 3px solid transparent;
padding: 0.75rem 1rem;
cursor: pointer;
}
[role="tab"][aria-selected="true"] {
border-bottom-color: #0070f3;
font-weight: bold;
}
/* :focus-visible for keyboard users: */
[role="tab"]:focus-visible {
outline: 2px solid #0070f3;
outline-offset: -2px;
}Snabbkontroll
Hur ska tangentbordsnavigering fungera i en tablista?
Sammanfattning: aria-selected och flikar
Det viktigaste om flikmönstret:
- tablist → tab (aria-selected) → tabpanel (aria-labelledby)
- Piltangenterna navigerar mellan flikar; Tab går in i panelen
- Roving tabindex: endast den aktiva fliken har tabindex=0
- aria-selected="true" på den aktiva fliken
- Inaktiva paneler använder attributet hidden
Lär dig HTML med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 40
- Lektioner
- 159
Vanliga frågor
Är lektionen ”aria-selected och tabbönster” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen HTML Academy, inklusive ”aria-selected och tabbönster”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i HTML Academy innehåller totalt 4 lektioner.
Vad lär jag mig i ”aria-selected och tabbönster”?
Implementera tangentbordstillgängliga flikgränssnitt Ni övar på HTML Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig HTML Academy?
Du behöver inga förkunskaper. Utbildningen i HTML Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”aria-selected och tabbönster”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här HTML Academy-lektionen?
Ja. Varje HTML Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- aria-expanded och aria-controls för växlingsknappar
- aria-selected och tabbönster
- Live-regioner aria-live aria-atomic aria-relevant
- Testning med skärmläsare