Accordion e tab JavaScript accessibili

Accordion e tab in JavaScript

Accordion e tab JavaScript accessibili: codice da copiare | We.Inc

Un accordion in JavaScript vanilla con altezza animata e aria-expanded, e tab con tasti freccia e roving tabindex. Entrambi girano dal vivo nella pagina, con una checklist da tastiera e una tabella ARIA.

Un accordion accessibile usa un vero button dentro ogni intestazione, con aria-expanded che indica se il suo pannello è aperto e aria-controls che nomina il pannello. Le tab accessibili usano role=tablist, tab e tabpanel, con aria-selected, e si spostano tra le tab con i tasti freccia, tenendo nell'ordine del tasto Tab solo la tab selezionata. Entrambe le demo qui sotto girano dal vivo.

Quale usare

Ogni demo è un unico blocco autonomo di HTML, CSS e JavaScript. Modificalo e il risultato si riesegue. Poi metti da parte il mouse e provalo con la tastiera usando la checklist più in basso.

Domande frequenti

Le tab devono cambiare con i tasti freccia o con Enter?

La guida ARIA consente entrambe le cose. Cambiare mentre si muove la freccia (attivazione automatica) è la soluzione più rapida quando i pannelli sono già caricati. Se mostrare un pannello è lento, sposta il focus con le frecce e cambia invece con Enter o Space.

Come animo l'altezza di un accordion senza misurarla con JavaScript?

Rendi il pannello una griglia e applica una transizione a grid-template-rows da 0fr a 1fr, con un elemento interno che ha overflow hidden. Il browser calcola l'altezza al posto tuo.

Un elemento details è accessibile?

Sì. I browser espongono summary come un pulsante con stato espanso, e funziona con la tastiera senza configurazioni. Stilizzare l'indicatore e animarlo è più difficile, ed è per questo che molti siti costruiscono ancora la propria versione.

Le risposte nascoste di un accordion contano per la SEO?

I contenuti presenti nell'HTML ma compressi vengono comunque scansionati. Tienili nel sorgente della pagina invece di caricarli al clic, e assicurati che la risposta visibile corrisponda a ciò che c'è nell'HTML.

Dove andare dopo

Errori comuni

Accordion

Accordion accessibile con altezza animata

Ogni intestazione contiene un vero button con aria-expanded e aria-controls. L'altezza si anima con una transizione delle righe della griglia, quindi non serve misurare scrollHeight. Provalo con Tab, Enter e Space.

Un solo pannello aperto alla volta

Quando si apre un pannello, chiudi qualsiasi altro pannello aperto. Rendilo facoltativo: chi confronta due risposte spesso le vuole entrambe aperte.

Alternativa senza JavaScript: details e summary

Gli elementi details nativi si aprono e chiudono senza script. Dare loro lo stesso attributo name li rende esclusivi nei browser attuali; quelli più vecchi ne permettono semplicemente più di uno aperto.

Tab

Tab con roving tabindex e tasti freccia

Solo la tab selezionata ha tabindex 0, quindi Tab entra una volta nell'elenco delle tab e poi passa al pannello. Le frecce destra e sinistra si spostano tra le tab, Home e End saltano agli estremi.

Checklist di tastiera e ARIA

Test da tastiera: prova ciascuno nelle demo

Riferimento ARIA

Attributi necessari per ogni parte

Lavori in React? Parti dai nostri

componenti tab per React

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito