separator
Segna un elemento come divisore tra sezioni di contenuto o voci di un widget composito. Utilizzare prima <hr> per le interruzioni tematiche nella prosa; ricorrere a role="separator" quando si separano voci all'interno di un menu, di una toolbar o di un altro widget.
Quando utilizzarlo
Per un’interruzione tematica tra sezioni di prosa, è opportuno usare <hr>. L’elemento nativo viene annunciato come separatore dagli screen reader.
role="separator" su un elemento non-<hr> è appropriato all’interno di widget compositi:
- Tra gruppi di menuitem all’interno di un
role="menu"orole="menubar". - Tra gruppi di controlli all’interno di un
role="toolbar". - Come maniglia di ridimensionamento in un layout a pannelli divisi (la variante attiva sul focus e «portatrice di valore» — si veda di seguito).
Esistono due varianti di separator:
- Statico — non ricevibile via focus, non interattivo. Divisore puramente visivo/semantico. Comportamento predefinito.
- Attivo sul focus —
tabindex="0", utilizzato come maniglia di trascinamento (ad esempio tra due pannelli). Supportaaria-valuenow,aria-valuemin,aria-valuemaxper esporre la posizione, e risponde ai tasti freccia per spostarsi.
Impostare aria-orientation="vertical" per i separatori verticali nelle toolbar orizzontali; orizzontale è il valore predefinito.
Errori comuni
role="separator"contabindex="0"ma senza gestore da tastiera. Gli utenti portano il focus su un elemento che non possono azionare.- Separator attivo sul focus privo di
aria-valuenow. Gli screen reader non riescono ad annunciare la posizione del pannello. - Utilizzo di
<hr>per linee puramente decorative. Se si tratta solo di un bordo CSS, è preferibile omettere l’<hr>e usareborder-top. - Più separatori in un menu senza una ragione logica di raggruppamento — generano confusione.
- Separator verticale in una toolbar orizzontale privo di
aria-orientation="vertical".
Esempio
<!-- Separator statico all'interno di un menu -->
<ul role="menu" aria-label="File">
<li role="menuitem" tabindex="0">New</li>
<li role="menuitem" tabindex="-1">Open</li>
<li role="separator"></li>
<li role="menuitem" tabindex="-1">Save</li>
</ul>
<!-- Separator attivo sul focus (maniglia di ridimensionamento) -->
<div
role="separator"
tabindex="0"
aria-orientation="vertical"
aria-valuenow="40"
aria-valuemin="0"
aria-valuemax="100"
aria-label="Resize panels"
></div>