2010-03-24 19 views
21

Se questa è la struttura:È bene inserire uno   all'interno di uno spazio vuoto <td>?

<table cellspacing="0" cellpadding="0"> 
    <tr> 
     <td>I don't need anything here, should I always put a &nbsp; here?</td> 
     <td>item </td> 
    </tr> 
    <tr> 
     <td>model</td> 
     <td>one</td> 
    </tr> 
    <tr> 
     <td>model</td> 
     <td>two</td> 
    </tr> 
    <tr> 
     <td>model</td> 
     <td>three</td> 
    </tr> 
</table> 

Come sarà uno screen reader leggere un vuoto td? È semanticamente corretto?

risposta

12

IMHO semanticamente corretto sarebbe quello di mantenere una cella vuota veramente vuota. Tuttavia, anche io riempisco le celle vuote con &nbsp; s per motivi pragmatici.

Per quanto riguarda i lettori di schermo, dovrò fare un'ipotesi: i nodi vuoti non sarà probabilmente essere letto, perché HTML consiste principalmente di nodi di testo spazi bianchi, che i lettori ignorano, e presumo, che &nbsp; è crollato a un spazio semplice nelle applicazioni del lettore (dal senza interruzioni è una proprietà dei supporti visivi).

Per il rendering visivo, si potrebbe utilizzare la proprietà CSS tavolo empty-cells:

table { 
    empty-cells: show; 
} 
+2

Penso che questa proprietà non sia supportata in IE –

+3

Questo è vero, e il motivo, perché continuo a usare ' ' s, sfortunatamente. – Boldewyn

+2

Secondo [MDN] (https://developer.mozilla.org/en-US/docs/Web/CSS/empty-cells), la proprietà 'empty-cells' ha supporto in IE 8. –

0

non c'è niente esattamente dicendo che non si dovrebbe usare usare un TD vuoto, e passa quando si tenta di convalidare .

Sebbene, un approccio più elegante sarebbe utilizzare colspan.

cioè

<tr> 
    <td colspan="2">item </td> 
</tr> 

Ma questo sarà allineare il contenuto a sinistra, e si dovrà manualmente (tramite CSS) applicare stili in modo che il contenuto è allineato in cui si desidera.

La cosa buona di utilizzarlo con colspans, è che i lettori di schermo leggeranno solo quello che c'è, e non gli spazi vuoti

+4

Il 'colspan' non è necessario più elegante o semantico. 'colspan' dice in modo efficace, che il valore della cella della tabella è una combinazione valida di valori che di solito appartengono a due celle diverse. Nel caso precedente: Se la prima riga è un'intestazione, allora 'colspan' dà un risultato completamente sbagliato (ad esempio, il contenuto della cella è marcato come etichetta per * entrambe * colonne). – Boldewyn

2

Grazie a editor come Dreamweaver questa pratica è diventato un po 'di uno standard, quindi, anche se si tratta di non è una soluzione perfetta - almeno non sarai solo nel farlo. Inoltre è più compatibile con i browser più vecchi rispetto ai CSS empty-cells.

4

Semanticamente, una tabella HTML è in realtà solo una matrice (matrice) di dati e non c'è motivo per cui un carattere di spazio senza interruzioni non possa essere considerato come dati. Se sia davvero sensato dipende dallo scopo, dalla struttura e dal contenuto della tabella. Nella maggior parte dei casi, c'è una soluzione migliore. Vedi alcuni suggerimenti in Empty cells in HTML tables.

Sul lato tecnico, lo spazio senza interruzioni ha larghezza e altezza, a seconda del carattere, e questo impone requisiti minimi per le dimensioni della cella. Ciò può essere importante, anche se principalmente nei casi in cui la riga o la colonna viene utilizzata solo come separatore, ad es. per creare una linea orizzontale o verticale.

Un altro impatto dell'utilizzo di uno spazio senza interruzione, come opposto all'utilizzo di uno spazio normale o lasciando la cella completamente vuota, è che potrebbe influire sull'aspetto dei bordi attorno alla cella e sul colore di sfondo e sull'immagine di sfondo all'interno della cella.

I lettori di schermo differiscono nel modo in cui indicano le celle vuote, se non del tutto, e questo può dipendere anche dalla modalità di lettura. In ogni caso, l'utente non ha alcuna indicazione di ciò che sta realmente accadendo, cioè che cosa vuol dire una cella vuota (se il vuoto è trasmesso all'utente). Nella navigazione visiva, il significato può (o non può) essere piuttosto ovvio.

Problemi correlati