Ambiti delle intestazioni delle tabelle
Silktide esegue un controllo per verificare che ogni cella di intestazione di una tabella dichiari a cosa si riferisce: a una colonna, a una riga o a un gruppo di colonne o righe. In questo modo, le sanno a quali celle si applica ogni intestazione.
In , una cella di intestazione <th> può fungere da intestazione per una colonna, una riga o un gruppo di colonne o righe. L'attributo scope specifica quale di questi elementi, eliminando ogni ambiguità sulla struttura della tabella.
<!-- Problema: non è specificato se "Name" è l'intestazione di una colonna o di una riga -->
<th>Name</th>
<!-- Correzione: scope lo rende esplicito -->
<th scope="col">Name</th>
Perché è importante
Uno annuncia le intestazioni pertinenti insieme a ogni cella mentre l'utente attraversa una tabella. Per farlo, deve sapere a quali celle si riferisce ogni intestazione. Nelle tabelle che hanno sia intestazioni di colonna sia intestazioni di riga, o intestazioni che si estendono su gruppi di celle, un'intestazione senza un ambito costringe lo screen reader a indovinare; e quando sbaglia, i valori vengono annunciati con il contesto sbagliato o senza alcun contesto.
Come risolvere il problema
Aggiungi un attributo scope a ogni cella <th>. I valori validi sono:
col: l'intestazione si applica alla colonna sottostante.row: l'intestazione si applica alla riga accanto.colgroup: l'intestazione si applica a un gruppo di colonne.rowgroup: l'intestazione si applica a un gruppo di righe.
<table>
<tr>
<th scope="col">Name</th>
<th scope="col">Age</th>
</tr>
<tr>
<th scope="row">Bob</th>
<td>35</td>
</tr>
</table>
Come Silktide esegue il controllo
- Individua ogni cella di intestazione
<th>in ogni pagina. - Segnala quelle il cui attributo
scopemanca o non corrisponde a uno dirow,col,rowgroupocolgroup.
Risoluzione dei problemi
La mia tabella semplice funziona anche senza ambiti
Per una tabella con una sola riga superiore di intestazioni, i browser e gli screen reader possono generalmente dedurne la struttura. Gli ambiti espliciti eliminano comunque ogni ambiguità, non hanno alcun costo e ti proteggono se in seguito la tabella diventa più complessa; per questo Silktide li richiede per ogni cella di intestazione. Se decidi che una determinata tabella va bene così com'è, puoi il risultato.