HTML Academy · Lektion

aria-selected och tabbönster

Implementera tangentbordstillgängliga flikgränssnitt

Lektion 2 av 413 steg

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 flikar
  • role="tab" – en enskild flikknapp
  • role="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äd
  • aria-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
Gratis att börja

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

  1. aria-expanded och aria-controls för växlingsknappar
  2. aria-selected och tabbönster
  3. Live-regioner aria-live aria-atomic aria-relevant
  4. Testning med skärmläsare
← Tillbaka till HTML Academy