2009-05-28 7 views
5

J'ai une ligne de tableau vide juste pour la séparation entre les lignes.Une ligne de table sera-t-elle affichée si toutes ses cellules sont vides?

<tr> 
    <td colspan="5"></td> 
</tr> 

Il est rendu dans IE, FF, Opera et Safari. La question est de savoir si je devrais mettre du contenu à l'intérieur ou s'il est acceptable de le laisser tel quel.

Comme:

<tr> 
    <td colspan="5">&nbsp;</td> 
</tr> 
+0

Vous feriez probablement mieux d'envelopper les différents blocs de données dans les éléments de tête ou de corps et de les styliser pour obtenir l'espacement. – Quentin

Répondre

11

Eh bien vous pouvez mettre un &nbsp; comme contenu de la colonne pour vous assurer que les lignes sont affichées. Le meilleur moyen est d'utiliser CSS pour l'espacement.

+1

+1 vous devriez vraiment utiliser CSS pour ce –

+1

CSS ne fonctionnera pas. Je souhaite également remplir les cellules avec la couleur de fond, tout en ayant des séparateurs restent blancs. Si je devais mettre du rembourrage sur les cellules, la zone rembourrée serait également remplie. Je ne veux pas ça. – User

0

Vous avez peut-être déjà essayé cela, mais si vous essayez d'ajouter de l'espace entre les lignes, vous avez essayé d'ajouter du rembourrage.

CELLSPACING = Longueur (espacement entre les cellules)

CELLPADDING = Longueur (espacement dans les cellules)

Karl

1

si vous voulez mettre le contenu à l'intérieur, j'utiliser un pas révolutionnaire espace : &nbsp;, plutôt qu'un blanc normal

6

Sémantiquement, la rangée vide a-t-elle un but, ou est-ce purement pour la disposition? Dans ce dernier cas, il peut être utile d'envisager de supprimer la ligne vide et de fournir la séparation via CSS. Par exemple.

<tr class="separate-below"> 
    <td>Data before separater</td><td>More Data</td>... 
</tr> 
<tr> 
    <td>Data after separater</td><td>More Data</td>... 
</tr> 

de ce qui suit dans la feuille de style:

TR.separate-below TD,TR.separate-below TH { 
    border-bottom: 1em solid white; /* use the background colour of a cell here */ 
} 

En variante, on peut utiliser plusieurs <tbody> éléments à blocs de groupes de rangées ensemble (l'ajout de règles = « groupes » à cause de l'élément de table <t> éléments pour gagner une bordure horizontale en haut et en bas, et <colgroup> élément pour gagner une bordure à leur gauche et à droite):

<table rules="groups"> 
<thead> 
    <tr><th>Header</th><th>Header</th>...</tr> 
</thead> 
<tbody> 
    <tr><td>Data</td><td>Data</td>...</tr> 
    <tr><td>Data</td><td>Data</td>...</tr> 
    ... 
</tbody> 
<tbody> 
    <tr><td>Data</td><td>Data</td>...</tr> 
    ... 
</tbody> 
... 
</table> 
3

Comme vous pouvez le voir dans this example de W3Schools en utilisant le &nbsp; est le meilleur moyen de faire ce que vous voulez.

+0

1. w3fools, 2. pourriture de la liaison. En dehors de cela, je ne suis pas contre les cellules de la table " ". – vaxquis

0

Pour assurer que les cellules vides sont affichées CSS suivantes peuvent être utilisées:

table { empty-cells:show; } 
+0

Cela ne fonctionne pas si toutes les cellules d'une ligne sont vides. – Matijs

0

Vous pouvez utiliser plusieurs tbody balises à des lignes de table de groupe. C'est totalement valide et plus sémantique.

1

C'est une question très ancienne, mais si quelqu'un a encore besoin d'une solution (problème existe avec display: table-cell ou table-row elements)

est ici la solution:

.emptyElement:after{ 
    content: "\00a0"; 
} 
1

Je voulais ajouter ma solution qui est modification de la solution @Dariusz Sikorski.L'utilisation d'une ligne vide pour l'espacement interrompt la structure de vos données.

td:empty:after, th:empty:after { 
    content: "\00a0"; 
} 
Questions connexes