HTML Academy · Les

aria-selected en tabpatronen

Implementeer tabinterfaces die toegankelijk zijn via het toetsenbord

Les 2 van 413 stappen

aria-selected en tabpatronen is een gratis HTML Academy-les op CoddyKit. Dit is les 2 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject HTML Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus HTML Academy bevat in totaal 4 lessen.

Overzicht van het tabbladpatroon

Een tabbladinterface heeft drie ARIA-componenten:

  • role="tablist" — container voor alle tabbladen
  • role="tab" — afzonderlijke tabbladknop
  • role="tabpanel" — het inhoudspaneel voor elk tabblad

ARIA-structuur voor tabbladen

Volledige toegankelijke opmaak voor tabbladen:

<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 geeft het momenteel actieve item in een selectiesituatie aan:

<!-- 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>

Toetsenbordpatroon voor tabbladen

ARIA-patronen definiëren specifiek toetsenbordgedrag voor tabbladen:

  • Tab — verplaatst de focus naar de tablijst, naar het geselecteerde tabblad
  • Pijltjestoetsen — navigeer tussen tabbladen
  • Tab opnieuw — verplaatst de focus uit de tablijst naar het actieve paneel
  • Home — eerste tabblad
  • End — laatste tabblad

Implementatie van toetsenbordbediening voor tabbladen

Toetsenbordnavigatie voor tabbladen met de pijltjestoetsen:

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();
    }
  });
});

Functie activateTab

Functie om tussen tabbladen te wisselen en ARIA bij te werken:

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;
}

Patroon voor roterende tabindex

Tabbladgroepen gebruiken een roterende tabindex om één tabblad in de tabvolgorde te houden:

<!-- 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 versus aria-checked

aria-selected versus aria-checked — verschillende situaties:

  • aria-selected — wordt gebruikt in selectiecomponenten: tabbladen, opties in een keuzelijst, items in een boomstructuur
  • aria-checked — wordt gebruikt voor aanvinkbare items: selectievakjes, menu-items met een vinkje

Focus op het tabpanel

Wanneer een tabblad wordt geactiveerd, wordt het paneel zichtbaar, maar blijft de focus op het tabblad:

// 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">

Automatische versus handmatige activering

Twee modellen voor het activeren van tabbladen:

  • Automatisch — tabbladen worden geactiveerd terwijl de gebruiker er met de pijltjestoetsen doorheen gaat (eenvoudigere gebruikerservaring)
  • Handmatig — de gebruiker moet na het navigeren met de pijltjestoetsen op Enter of Spatie drukken om te activeren (beter wanneer de inhoud van een tabblad moet worden geladen)

Toegankelijke opmaak voor tabbladen

CSS voor de geselecteerde status van een toegankelijk tabblad:

[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;
}

Korte controle

Hoe moet toetsenbordnavigatie binnen een tablijst werken?

Samenvatting: aria-selected en tabbladen

Essentiële punten van het tabbladpatroon:

  • tablist → tab (aria-selected) → tabpanel (aria-labelledby)
  • Met de pijltjestoetsen navigeer je tussen tabbladen; met Tab ga je het paneel binnen
  • Roterende tabindex: alleen het actieve tabblad heeft tabindex=0
  • aria-selected="true" op het actieve tabblad
  • Inactieve panelen gebruiken het hidden-attribuut
Gratis beginnen

Leer HTML met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
40
Lessen
159

Veelgestelde vragen

Is de les “aria-selected en tabpatronen” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad HTML Academy, waaronder “aria-selected en tabpatronen”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus HTML Academy bevat in totaal 4 lessen.

Wat leer ik in “aria-selected en tabpatronen”?

Implementeer tabinterfaces die toegankelijk zijn via het toetsenbord Je oefent met HTML Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met HTML Academy te beginnen?

Ervaring vooraf is niet nodig. HTML Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.

Hoe lang duurt de les “aria-selected en tabpatronen”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over HTML Academy?

Ja. Elke les over HTML Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. aria-expanded en aria-controls voor schakelaars
  2. aria-selected en tabpatronen
  3. Livegebieden: aria-live aria-atomic aria-relevant
  4. Testen met schermlezers
← Terug naar HTML Academy