Come selezionare il primo e l'ultimo TD consecutivo?


170

Come puoi selezionare il primo e l'ultimo TDdi fila?

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

Risposte:


377

È possibile utilizzare l' :first-childe :last-childpseudo-selettori:

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

Questo dovrebbe funzionare in tutti i principali browser, ma IE7 ha alcuni problemi quando gli elementi vengono aggiunti in modo dinamico (e non funzionerà in IE6).


e se si desidera selezionare il secondo o terzo figlio?
Clarkk,

2
e qual è la differenza tra tr > tde tr td?
Clarkk,

La seguente regola imposta lo stile di tutti gli elementi P che sono figli di BODY: body> P {line-height: 1.3} Puoi vedere su: w3.org/TR/CSS2/selector.html#child-selectors (stessa pagina pubblicata di James)
Francesco,

4
@clarkk: >seleziona solo i bambini diretti. Senza di essa, verranno selezionati tutti i discendenti (ad es. Figli di bambini). Per selezionare il 2o o 3o figlio, guarda nello nth-childpseudo-selettore.
James Allardice,

@BoltClock Una volta ho visto la tua soluzione a questo problema +. qualcosa di simile, tr td + td + .... +td ma cosa succede se non so quanti td ho?
Royi Namir,

19

Puoi utilizzare il seguente frammento:

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

Utilizzando le seguenti pseudo classi:

: first-child significa "seleziona questo elemento se è il primo figlio del suo genitore".

: last-child significa "seleziona questo elemento se è l' ultimo figlio del suo genitore".

Sono interessati solo i nodi elemento (tag HTML), queste pseudo-classi ignorano i nodi di testo.


15

È possibile utilizzare : first-child e : last-child pseudo-selectors :

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

Oppure puoi usare un altro modo come

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

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

Entrambi i modi funzionano perfettamente


2

Se usi sass (scss) puoi usare il seguente frammento:

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

2

Se la riga contiene alcuni thtag iniziali (o finali) prima tddi utilizzare :first-of-typei :last-of-typeselettori e. Altrimenti il ​​primo tdnon verrà selezionato se non è il primo elemento della riga.

Questo da:

td:first-of-type, td:last-of-type {
    /* styles */
}

1
mi hai risparmiato il tempo che stavo usando last-child che non funzionava ma la tua soluzione ha funzionato perfettamente
Mirza Obaid
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.