2010-03-24 16 views
21

Ist dies der Struktur ist:Ist es gut, eine   in eine leere zu setzen?

<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> 

Wie wird ein Screenreader eine leere td lesen? Ist es semantisch korrekt?

Antwort

12

Semantisch korrekt IMHO wäre, eine leere Zelle wirklich leer zu halten. Aber auch ich fülle leere Zellen mit &nbsp; s aus pragmatischen Gründen.

Wie für Bildschirmleser, muss ich eine begründete Vermutung machen: Leere Knoten werden wahrscheinlich nicht gelesen werden, weil HTML meist aus Leerzeichen Textknoten besteht, die Leser ignorieren, und ich nehme an, dass &nbsp; zu a zusammengebrochen ist einfacher Platz in Leser Anwendungen (seit nicht brechen ist eine Eigenschaft von visuellen Medien).

Zur visuellen Rendering könnte man auf der CSS-Tabelleneigenschaft verlassen empty-cells:

table { 
    empty-cells: show; 
} 
+2

Ich denke, dass diese Eigenschaft in IE –

+3

nicht unterstützt wird. Das stimmt, und der Grund, warum ich ' ' s immer noch verwenden, leider. – Boldewyn

+2

Laut [MDN] (https://developer.mozilla.org/en-US/docs/Web/CSS/empty-cells) hat die Eigenschaft 'empty-cells' Unterstützung in IE 8. –

0

gibt es nichts genau sagen, Sie nicht eine leere TD verwenden verwenden sollten, und es passiert, wenn Sie versuchen, zu validieren .

Obwohl ein eleganter Ansatz wäre, Colspan zu verwenden.

heißt

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

Aber dies wird Ihre Inhalte nach links ausrichten, und Sie werden von Hand müssen (via CSS) Stile anwenden so dass der Inhalt ausgerichtet ist, wo Sie wollen.

Das Gute daran mit colspans besteht darin, dass Screenreadern nur lesen, was da ist, und nicht die leeren Räume

+4

Der 'Colspan' ist nicht notwendig eleganter oder semantischer. 'colspan' sagt effektiv, dass der Wert der Tabellenzelle eine gültige Kombination von Werten ist, die normalerweise in zwei verschiedene Zellen gehören. Im obigen Fall: Wenn die erste Zeile eine Überschrift ist, gibt "colspan" ein vollständig falsches Ergebnis (d. H. Der Zelleninhalt wird als Markierung für * beide * Spalten markiert). – Boldewyn

2

Dank Editoren wie Dreamweaver diese Praxis wurde so etwas wie ein Standard, so auch wenn es keine perfekte Lösung - zumindest wirst du nicht alleine dabei sein. Außerdem ist es kompatibler mit älteren Browsern als CSS's empty-cells.

4

Semantisch ist eine HTML-Tabelle eigentlich nur ein Array (Matrix) von Daten, und es gibt keinen Grund, warum ein Leerzeichen ohne Leerzeichen nicht als Daten behandelt werden kann. Ob es wirklich sinnvoll ist, hängt von Zweck, Struktur und Inhalt der Tabelle ab. In den meisten Fällen gibt es eine bessere Lösung. Sehen Sie einige Vorschläge in Empty cells in HTML tables.

Auf der technischen Seite hat der No-Break-Platz je nach Schriftart Breite und Höhe und dies erfordert minimale Anforderungen an die Abmessungen der Zelle. Dies kann wichtig sein, obwohl dies meistens in Fällen der Fall ist, in denen die Reihe oder die Spalte nur als Trennzeichen verwendet wird, z. um eine horizontale oder vertikale Linie zu erstellen.

Eine weitere Auswirkung der Verwendung eines nicht-Pause Raum, als gegenüber einem normalen Raum zu verwenden oder die Zelle vollständig leer zu verlassen, ist, dass sie das Aussehen der Ränder um die Zelle und Hintergrundfarbe und Hintergrundbild im Innern der Zelle beeinflussen können.

Bildschirmleser unterscheiden sich in der Art, wie sie leere Zellen anzeigen, wenn überhaupt, und dies kann auch vom Lesemodus abhängen. In jedem Fall erhält der Benutzer keinen Hinweis darauf, was wirklich vor sich geht, d. H. Welche leere Zelle (wenn die Leere überhaupt an den Benutzer übermittelt wird). Beim visuellen Browsen kann die Bedeutung (oder auch nicht) offensichtlich sein.

Verwandte Themen