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.