group
Individua un raggruppamento generico di elementi correlati. Semanticamente meno rilevante di un landmark — i screen reader non elencano i group nel menu dei landmark. Si usa <fieldset> + <legend> per raggruppare controlli di modulo; si ricorre a role="group" per raggruppamenti non relativi a moduli.
Quando usarlo
Per raggruppare controlli di modulo, si utilizza <fieldset> con <legend>. L’elemento nativo fornisce la semantica di raggruppamento, il bordo visivo (da stilizzare liberamente) e l’associazione alla legenda.
role="group" è lo strumento appropriato quando:
- Si avvolge un insieme di controlli correlati ma non appartenenti a un modulo (i tre combo box di un date picker, una fila di pulsanti icona attivabili).
- È necessario contrassegnare una sottoregione all’interno di un tree, treeview o grid, dove i figli di ciascun livello formano un gruppo logico.
- Si desidera un raggruppamento che NON venga esposto come landmark — per questa distinzione si veda
role="region".
Un group DOVREBBE avere un nome accessibile (aria-label o aria-labelledby) quando il suo scopo non è evidente dal contesto. Senza nome, il group è invisibile ai screen reader e il ruolo non aggiunge valore.
Errori comuni
role="group"senza nome accessibile. I screen reader ignorano il ruolo; il group risulta invisibile.- Usare
role="group"dove<fieldset>+<legend>sarebbero appropriati. L’elemento nativo è da preferire. - Confondere
role="group"conrole="region". Region è un landmark e compare nella navigazione per landmark; group no. - Contrassegnare come group ogni sezione dell’interfaccia. Va usato con parsimonia — troppi raggruppamenti ne sminuiscono il valore.
role="group"sul contenitore di unrole="tablist". Ridondante; il tablist è già un costrutto di raggruppamento.
Esempio
<!-- Preferito per controlli di modulo -->
<fieldset>
<legend>Data di nascita</legend>
<label>Giorno <input type="text" inputmode="numeric"></label>
<label>Mese <input type="text" inputmode="numeric"></label>
<label>Anno <input type="text" inputmode="numeric"></label>
</fieldset>
<!-- Raggruppamento non relativo a moduli -->
<div role="group" aria-labelledby="ratingLabel">
<span id="ratingLabel">Valuta questo articolo</span>
<button type="button" aria-label="1 stella">★</button>
<button type="button" aria-label="2 stelle">★★</button>
</div>