aria-level
Indica il livello gerarchico di un elemento all'interno di una struttura. Obbligatorio sugli elementi con role="heading"; utilizzato anche su role="treeitem" e role="listitem" all'interno di elenchi annidati. Valore intero, a partire da 1.
Quando si usa
Su role="heading" per dichiarare il livello del titolo — l’equivalente ARIA della scelta tra <h1> e <h6>. Gli elementi di intestazione nativi devono rappresentare la prima scelta; si ricorre a role="heading" + aria-level solo quando occorre un livello superiore a 6, o quando un framework non consente di usare direttamente un elemento di intestazione.
È valido anche su role="treeitem" (profondità nell’albero, a partire da 1 per gli elementi di primo livello) e su role="listitem" all’interno di un role="list" annidato, quando la nidificazione non è espressa dalla struttura del DOM.
Comportamento
Il valore è un intero positivo. Per le intestazioni, i valori da 1 a 6 corrispondono a <h1>–<h6>; i valori superiori a 6 sono validi in ARIA, ma pochi screen reader li espongono, pertanto non è opportuno dipendere dal fatto che il livello 7 venga annunciato come tale.
Per gli elementi ad albero, il livello indica la profondità: la radice dell’albero è al livello 1, i suoi figli diretti al livello 2 e così via. Il numero di livello consente all’utente di uno screen reader di comprendere la propria posizione nella gerarchia senza percepire l’indentazione visiva.
L’attributo non modifica lo stile visivo. Se un «titolo ARIA di livello 4» deve apparire come un h4, lo stile va applicato manualmente.
Errori comuni
- Usare
role="heading"conaria-level="3"anziché semplicemente<h3>. L’elemento nativo fornisce gratuitamente il role, il livello, la navigazione da tastiera predefinita e l’integrazione nella struttura del documento. - Impostare
aria-levelsu un elemento privo dirole="heading",role="treeitem"orole="listitem". L’attributo non ha effetto, ad esempio, su un<button>o un<div>senza role. - Saltare un livello — un livello 2 seguito da un livello 4 altera la struttura del documento e viene rilevato durante gli audit del criterio di successo 1.3.1.
- Treeitem con livello errato: ogni figlio di un elemento di livello 2 deve essere al livello 3. Errori di scarto qui compromettono gli annunci «salito di un livello» / «sceso di un livello».
- Valori non interi o pari a zero. Sono validi solo gli interi positivi;
aria-level="0"viene ignorato. - Dimenticare di aggiornare
aria-levelquando gli elementi vengono spostati in un albero con trascinamento.
Esempio
<!-- Intestazione più profonda di h6 (raro; necessario in strutture complesse) -->
<div role="heading" aria-level="7">Sotto-sotto-sotto-sezione</div>
<!-- I treeitem esprimono la profondità tramite aria-level -->
<ul role="tree">
<li role="treeitem" aria-level="1" aria-expanded="true">
Documenti
<ul>
<li role="treeitem" aria-level="2">Fatture</li>
<li role="treeitem" aria-level="2">Contratti</li>
</ul>
</li>
</ul>