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 */
}

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


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.


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


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*/
   }
 }

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 */
}

1
vous avez économisé mon temps J'utilisais le dernier enfant qui ne fonctionnait pas mais votre solution fonctionnait parfaitement
— Mirza Obaid
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.