Comment sélectionner le premier et le dernier TD d'affilée?

170

Comment sélectionner le premier et le dernier TDconsécutif?

tr > td[0],
tr > td[-1] {
/* styles */
}
Clarkk
la source

Réponses:

377

Vous pouvez utiliser la :first-childet :last-childpseudo-sélecteurs:

tr td:first-child,
tr td:last-child {
    /* styles */
}

Cela devrait fonctionner dans tous les principaux navigateurs, mais IE7 a quelques problèmes lorsque des éléments sont ajoutés dynamiquement (et cela ne fonctionnera pas dans IE6).

James Allardice
la source
et que faire si vous voulez sélectionner le deuxième ou le troisième enfant?
clarkk
2
et quelle est la différence entre tr > tdet tr td?
clarkk
La règle suivante définit le style de tous les éléments P qui sont des enfants de BODY: body> P {line-height: 1.3} Vous pouvez voir à: w3.org/TR/CSS2/selector.html#child-selectors (même page publiée par James)
Francesco
4
@clarkk - >Sélectionne uniquement les enfants directs. Sans cela, tous les descendants (par exemple les enfants d'enfants) seront sélectionnés. Pour sélectionner le 2ème ou 3ème enfant, regardez dans le nth-childpseudo-sélecteur.
James Allardice
@BoltClock j'ai vu une fois votre solution à ce problème en utilisant +. quelque chose comme tr td + td + .... +td mais que faire si je ne sais pas combien de td j'ai?
Royi Namir
19

Vous pouvez utiliser l'extrait de code suivant:

  tr td:first-child {text-decoration: underline;}
  tr td:last-child {color: red;}

Utilisation des pseudo classes suivantes:

: first-child signifie "sélectionner cet élément si c'est le premier enfant de son parent".

: last-child signifie "sélectionner cet élément si c'est le dernier enfant de son parent".

Seuls les nœuds d'élément (balises HTML) sont concernés, ces pseudo-classes ignorent les nœuds de texte.

Francesco
la source
15

Vous pouvez utiliser les : first-child et : last-child pseudo-selectors :

tr td:first-child{
    color:red;
}
tr td:last-child {
    color:green
}

Ou vous pouvez utiliser une autre manière comme

// To first child 
tr td:nth-child(1){
    color:red;
}

// To last child 
tr td:nth-last-child(1){
    color:green;
}

Les deux voies fonctionnent parfaitement

Ajay Gupta
la source
2

Si vous utilisez sass (scss), vous pouvez utiliser l'extrait de code suivant:

tr > td{
   /* styles for all td*/
   &:first-child{
     /* styles for first */ 
   }
   &:last-child{
    /* styles for last*/
   }
 }
Elbaz
la source
2

Si la ligne contient des thbalises de début (ou de fin) avant le, tdvous devez utiliser :first-of-typeles :last-of-typesélecteurs et. Sinon, le premier tdne sera pas sélectionné s'il ne s'agit pas du premier élément de la ligne.

Cela donne:

td:first-of-type, td:last-of-type {
    /* styles */
}
Christophe Chiche
la source
1
vous avez économisé mon temps J'utilisais le dernier enfant qui ne fonctionnait pas mais votre solution fonctionnait parfaitement
Mirza Obaid