¿Cómo seleccionar el primer y el último TD seguidos?


170

¿Cómo puedes seleccionar el primero y el último TDde una fila?

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

Respuestas:


377

Se podría utilizar el :first-childy :last-childpseudo-selectores:

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

Esto debería funcionar en todos los navegadores principales, pero IE7 tiene algunos problemas cuando los elementos se agregan dinámicamente (y no funcionará en IE6).


¿Y si quieres seleccionar el segundo o tercer hijo?
clarkk

2
y cual es la diferencia entre tr > tdy tr td?
clarkk

La siguiente regla establece el estilo de todos los elementos P que son hijos de BODY: body> P {line-height: 1.3} Puede verlo en: w3.org/TR/CSS2/selector.html#child-selectors (misma página publicada por James)
Francesco

44
@clarkk: >selecciona solo hijos directos. Sin ella, se seleccionarán todos los descendientes (por ejemplo, hijos de niños). Para seleccionar el segundo o tercer hijo, mire el nth-childpseudo-selector.
James Allardice

@BoltClock Vi una vez que usaba su solución a este problema +. algo como tr td + td + .... +td pero ¿qué pasa si no sé cuántos td tengo?
Royi Namir

19

Puede usar el siguiente fragmento:

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

Usando las siguientes pseudo clases:

: primer hijo significa "seleccione este elemento si es el primer hijo de su padre".

: last-child significa "seleccione este elemento si es el último hijo de su padre".

Solo los nodos de elementos (etiquetas HTML) se ven afectados, estas pseudo-clases ignoran los nodos de texto.


15

Puede usar : first-child y : last-child pseudo-selectors :

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

O puedes usar otra forma como

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

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

Ambas formas funcionan perfectamente


2

Si usa sass (scss) puede usar el siguiente fragmento:

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

2

Si la fila contiene algunas thetiquetas iniciales (o finales) antes de td, debe usar los :first-of-typey los :last-of-typeselectores. De lo contrario, el primero tdno se seleccionará si no es el primer elemento de la fila.

Esto da:

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

1
me ahorraste el tiempo que estaba usando last-child que no funcionaba pero tu solución funcionó perfectamente
Mirza Obaid
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.