127 votes

Appliquer le style uniquement au premier niveau de tags td

Existe-t-il un moyen d'appliquer le style d'une classe à UN seul niveau de balises td?

 <style>.MyClass td {border: solid 1px red;}</style>

<table class="MyClass">
  <tr>
    <td>
      THIS SHOULD HAVE RED BORDERS
    </td>
    <td>
      THIS SHOULD HAVE RED BORDERS
      <table><tr><td>THIS SHOULD NOT HAVE ANY</td></tr></table>
    </td>
  </tr>
</table>
 

211voto

bobince Points 270740

Est-il un moyen pour appliquer une Classe de style à UN seul niveau de balises td?

Oui*:

.MyClass>tbody>tr>td { border: solid 1px red; }

Mais! Le ‘>' direct-sélecteur d'enfant ne fonctionne pas dans IE6. Si vous avez besoin de soutien que le navigateur (dont vous n'avez probablement, hélas), tout ce que vous pouvez faire est de sélectionner l'intérieur de l'élément séparément et de l'onu-définir le style:

.MyClass td { border: solid 1px red; }
.MyClass td td { border: none; }


*Notez que le premier exemple fait référence à un tbody élément ne trouve pas dans votre code HTML. Il doit avoir été dans votre code HTML, mais les navigateurs sont généralement ok avec les laissant... ils suffit de l'ajouter dans les coulisses.

37voto

aviko oloo Points 399

que diriez-vous d'utiliser la CSS: pseudo-classe premier-enfant:

 .MyClass td:first-child { border: solid 1px red; }
 

8voto

Nick Presta Points 13298

Ce style:

 table tr td { border: 1px solid red; }
td table tr td { border: none; }
 

Donne moi:

ce

Cependant, utiliser une classe est probablement la bonne approche ici.

6voto

Chuck Points 138930

Il suffit de faire un sélecteur de tables dans une MyClass.

 .MyClass td {border: solid 1px red;}
.MyClass table td {border: none}
 

(Pour appliquer de manière générique à toutes les tables internes, vous pouvez également faire table table td .)

3voto

prule Points 695

Je voulais définir la largeur de la première colonne du tableau et j'ai trouvé que cela fonctionnait (en FF7) - la première colonne mesure 50 pixels de large:

 #MyTable>thead>tr>th:first-child { width:50px;}
 

où était mon balisage

 <table id="MyTable">
 <thead>
  <tr>
   <th scope="col">Col1</th>
   <th scope="col">Col2</th>
  </tr>
 </thead>
 <tbody>
   ...
 </tbody>
</table>
 

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