Toegankelijke JavaScript-accordeon en tabs

JavaScript-accordeon en tabs

Toegankelijke JavaScript-accordeon en tabs: code om te kopiëren | We.Inc

Een accordeon in vanilla JavaScript met geanimeerde hoogte en aria-expanded, en tabs met pijltjestoetsen en roving tabindex. Beide draaien live op de pagina, met een toetsenbordchecklist en een ARIA-tabel.

Een toegankelijke accordeon gebruikt een echte button in elke kop, met aria-expanded die aangeeft of het paneel open is en aria-controls die het paneel benoemt. Toegankelijke tabs gebruiken role=tablist, tab en tabpanel, met aria-selected, en wisselen tussen tabs met de pijltjestoetsen, waarbij alleen de geselecteerde tab in de Tab-volgorde blijft. Beide demo's hieronder draaien live.

Welke u gebruikt

Elke demo is één opzichzelfstaand blok HTML, CSS en JavaScript. Bewerk het en het resultaat draait opnieuw. Leg daarna uw muis weg en test het met het toetsenbord aan de hand van de checklist verderop.

Veelgestelde vragen

Moeten tabs wisselen bij een pijltjestoets of bij Enter?

De ARIA-gids staat beide toe. Wisselen terwijl de pijl beweegt (automatische activering) voelt het snelst als panelen al geladen zijn. Is het tonen van een paneel traag, verplaats de focus dan met de pijltjes en wissel pas bij Enter of Space.

Hoe animeer ik de hoogte van een accordeon zonder dat JavaScript meet?

Maak van het paneel een grid en laat grid-template-rows overgaan van 0fr naar 1fr, met een binnenelement dat overflow hidden heeft. De browser rekent de hoogte voor u uit.

Is een details-element toegankelijk?

Ja. Browsers presenteren summary als een button met een uitgevouwen toestand, en het werkt meteen met het toetsenbord. De markering opmaken en animeren is lastiger, en daarom bouwen veel sites nog hun eigen versie.

Tellen verborgen accordeonantwoorden mee voor SEO?

Inhoud die in de HTML staat maar is samengevouwen, wordt nog steeds gecrawld. Houd haar in de paginabron in plaats van haar bij een klik te laden, en zorg dat het zichtbare antwoord overeenkomt met wat in de HTML staat.

Waar u daarna heen kunt

Veelgemaakte fouten

Accordeon

Toegankelijke accordeon met geanimeerde hoogte

Elke kop bevat een echte button met aria-expanded en aria-controls. De hoogte animeert met een overgang op de grid-rijen, dus scrollHeight hoeft niet te worden gemeten. Probeer het met Tab, Enter en Space.

Maar één paneel tegelijk open

Gaat een paneel open, sluit dan elk ander open paneel. Houd dit optioneel: mensen die twee antwoorden vergelijken willen vaak beide open hebben.

Terugvaloptie zonder JavaScript: details en summary

Native details-elementen openen en sluiten zonder script. Geeft u ze hetzelfde name-attribuut, dan sluiten ze elkaar uit in huidige browsers; oudere browsers laten er gewoon meerdere open.

Tabs

Tabs met roving tabindex en pijltjestoetsen

Alleen de geselecteerde tab heeft tabindex 0, dus Tab gaat één keer de tablijst in en daarna door naar het paneel. Pijl naar links en rechts wisselen tussen tabs, Home en End springen naar de uiteinden.

Checklist voor toetsenbord en ARIA

Toetsenbordtest: probeer elke toets in de demo's

ARIA-overzicht

Attributen die elk onderdeel nodig heeft

Werkt u in React? Begin met onze

React-tabcomponenten

Gratis beginnen · Geen creditcard nodig

Gerelateerd: Gidsen

Product

Voor wie

Functies

Bronnen

Bedrijf

Sitemap