237 votes

Comment ajouter une marge à une ligne de tableau <tr>.

J'ai un tableau contenant de nombreuses lignes. Certaines de ces lignes sont class="highlight" et signifient une ligne qui doit être stylisée différemment et mise en évidence. Ce que j'essaie de faire, c'est d'ajouter un espace supplémentaire avant et après ces rangées afin qu'elles apparaissent légèrement séparées des autres rangées.

Je pensais que je pourrais le faire avec margin-top:10px;margin-bottom:10px; mais ça ne marche pas. Quelqu'un sait-il comment faire, ou si c'est possible ? Voici le HTML et j'ai défini le deuxième tr dans le tbody comme classe de mise en évidence.

<table>
<thead>
  <tr>
     <th>Header 1</th>
     <th>Header 2</th>
  </tr>
</thead>
<tbody>
  <tr>
     <td>Value1</td>
     <td>Value2</td>
  </tr>
  <tr class="highlight">
     <td>Value1</td>
     <td>Value2</td>
  </tr>
  <tr>
     <td>Value1</td>
     <td>Value2</td>
  </tr>
  <tr>
     <td>Value1</td>
     <td>Value2</td>
  </tr>
</tbody>
</table>

0 votes

Essayez ceci : tr.highlight td { position : relative ; background-color : #EEEEEE ; padding : 5px 0 5px 0 ; }

2 votes

Si vous utilisez le separated modèle de boîte J'ai obtenu l'effet que vous vouliez en jouant avec les bordures des éléments de cellule (TD et TH), et non TR comme @Jrd l'a suggéré : tr.highlight td { border-top : 10px solid ; border-bottom : 10px solid ; border-color : transparent ; }

182voto

Steve Binder Points 542

Les lignes du tableau ne peuvent pas avoir de valeurs de marge. Pouvez-vous augmenter le padding ? Cela pourrait fonctionner. Sinon, vous pourriez insérer un <tr class="spacer"></tr> avant et après le class="highlighted" rangs.

31 votes

L'ajout de tout type de rembourrage à <tr> ne bouge rien, sauf si vous spécifiez display: block à partir de laquelle la largeur de la <tr> est basé sur le contenu. Ajout de votre proposition d'espacement <tr> avec un ensemble height fonctionne parfaitement, cependant.

4 votes

Pour être plus précis, <tr> ne peut pas avoir de valeurs de marge puisque CSS 2.1 mais il pourrait jusqu'à CSS 2 . Je n'ai jamais trouvé la raison de ce changement.

2 votes

Oui, malheureusement. tr ne peut pas avoir de valeurs de marge, comme Steve l'a écrit. Je fixe une valeur de marge à chaque td comme un remplacement pour ceci :( padding n'est pas la solution, à mon avis, surtout si les rangées sont de couleurs différentes (fond) et que vous avez besoin d'un peu d'espace, disons, vide (blanc).

65voto

Mr Lister Points 14181

Vous ne pouvez pas styliser le <tr> eux-mêmes, mais vous pouvez donner aux <td> à l'intérieur du "highlight". <tr> s un style, comme ceci

tr.highlight td {
  padding-top: 10px; 
  padding-bottom:10px
}

9 votes

Cela ne fonctionnera visuellement que si le td background-color est le même que le tr .

34voto

Mehmet Eren Yener Points 858

La hauteur de ligne peut être une solution possible

tr
{
    line-height:30px;
}

0 votes

Avec cela, je ne pouvais pas utiliser vertical-align : bottom.

2 votes

À moins qu'il n'y ait plus d'une ligne dans l'une des <td>enfants - chaque ligne sera "plus haute". Dans ce cas, les réponses qui donnent un style au remplissage des <td> fonctionnent.

1voto

Katti Points 652

Voici la réponse pour vous.. http://jsfiddle.net/mXMED/2/

-1voto

user1337 Points 627

Je vous suggère fortement de jeter un coup d'œil à vos statistiques et de voir combien d'utilisateurs IE7 ou moins visitent votre site. J'ai découvert que je peux maintenant abandonner la prise en charge d'IE7, ce qui signifie que je peux utiliser des tableaux CSS... ce qui rendra les choses beaucoup plus faciles à travailler.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X