Selección avanzada de elementos con `nthChild` en CSS

Clase 7 de 34Curso de CSS Avanzado y Responsive Design

Resumen

La pseudoclase nthChild de CSS es una herramienta esencial para crear selecciones específicas en nuestros documentos HTML. Originalmente usada para seleccionar elementos números pares o impares, ahora presenta mejoras que permiten la selección precisa de elementos específicos dentro de un mismo selector. Vamos a profundizar cómo implementar estas mejoras para optimizar tu CSS y simplificar tu trabajo.

¿Qué es la pseudoclase nthChild y para qué sirve?

La pseudoclase nthChild se emplea para seleccionar elementos basados en su posición dentro de un conjunto de elementos hermanos. Comúnmente la utilizamos para modificar, por ejemplo, los números pares mediante la fórmula 2n.

Por ejemplo, si tenemos varios párrafos (<p>) dentro de un contenedor:

<div>
  <p>Primer párrafo</p>
  <p>Segundo párrafo</p>
  <p>Tercer párrafo</p>
  <p>Cuarto párrafo</p>
  <p>Quinto párrafo</p>
  <p>Sexto párrafo</p>
</div>

Si deseas estilizar solo los párrafos pares, el código CSS sería:

div p:nth-child(2n) {
  color: red;
  font-weight: bold;
}

¿Qué problemas presenta la versión original de nthChild?

Un inconveniente surge cuando agregamos otro elemento entre los párrafos hermano, por ejemplo un <span>:

<div>
  <p>Primer párrafo</p>
  <span>Hola, soy un span</span>
  <p>Segundo párrafo</p>
  <p>Tercer párrafo</p>
  <p>Cuarto párrafo</p>
  <p>Quinto párrafo</p>
  <p>Sexto párrafo</p>
</div>

Esto afecta la selección 2n, haciendo que se alteren los elementos seleccionados, ya que considera todos los hijos del contenedor y no distingue tipos de elementos.

¿Cómo optimizar la selección utilizando la mejora nthChild()?

La solución es especificar claramente qué elementos quieres seleccionar agregando of seguido del selector específico dentro del método nthChild, así:

div p:nth-child(2n of p) {
  color: red;
  font-weight: bold;
}

De este modo, solo los párrafos (<p>) pares serán seleccionados independientemente de otros tipos de elementos intercalados, dándonos un mayor control sobre nuestro CSS.

Esta mejora permite:

  • Evitar errores al agregar elementos distintos.
  • Mayor precisión en selecciones de elementos.
  • Simplificación y optimización del código CSS.

Te invitamos a que compartas tu experiencia al aplicar esta mejora en tus proyectos web, ¿has usado ya esta forma avanzada del nthChild?