Pseudo-clases estructurales CSS3 – Fórmula :nth-child

Fórmula nth-child

En esta entrada voy a explicar mediante ejemplos sencillos la fórmula que podemos aplicar a la :pseudo-clase :nth-child, even y odd.

Desde aquí puedes ver la entrada completa de las :pseudo-clases estructurales.

Como os contaba en la entrada anterior dedicada a las :pseudo-clases, éstas tienen muchas cosas en común con los selectores de atributos.

Con ellas podremos apuntar a determinados elementos de nuestro código HTML sin la necesidad de emplear clases ni identificadores.

Antes de nada, voy a crear el esquema de la estructura DOM con la que trabajaremos los ejemplos.

<body>
     <div>Esto es un texto de prueba para el elemento div 1</div>
     <div>Esto es un texto de prueba para el elemento div 2</div>
     <div>Esto es un texto de prueba para el elemento div 3</div>
     <div>Esto es un texto de prueba para el elemento div 4</div>
     <div>Esto es un texto de prueba para el elemento div 5</div>
     <div>Esto es un texto de prueba para el elemento div 6</div>
     <div>Esto es un texto de prueba para el elemento div 7</div>
     <div>Esto es un texto de prueba para el elemento div 8</div>
     <div>Esto es un texto de prueba para el elemento div 9</div>
</body>

También he aplicado un estilo al body.

body{
     font-family:Arial, Helvetica, sans-serif;
     font-weight:bold;
     background-color:#666;
     color:#ccc;
}

:nth-child (n)

Con esta pseudo-clase podremos seleccionar mediante la posición, elementos hijos de una forma alterna.
Con este ejemplo seleccionaremos varios de los elementos div haciendo referencia a su posición con un número entero.

div:nth-child(2) { 
     color:#9FF; 
}
div:nth-child(4) { 
     color:#F3F; 
}

:nth-child (even)

Con este ejemplo seleccionaremos los elementos div que tengan una posición par, para esto empleamos la palabra even.

div:nth-child(even) { 
     color:#F3F;
}

:nth-child (odd)

Con este ejemplo seleccionaremos los elementos div que tengan una posición impar, para esto empleamos la palabra odd.

div:nth-child(odd) { 
	color:#9FF;
}

:nth-child (an+b)

Con este ejemplo seleccionaremos los elementos div que den como resultado de aplicar la fórumla (an+b).

El funcionamiento de esta fórmula viene a ser parecido a la estructura de programación for.
Obviamente no tiene nada que ver con ella, pero su funcionamiento es similar.

(an+b)

No olvidemos que esta fórmula se puede aplicar a las siguientes :pseudo-clases

:nth-child ( an+b )
:nth-last-child ( an+b )
:nth-of-type ( an+b )
:nth-last-of-type ( an+b )

a: es el ciclo o número de veces que deseamos que se repita.
n: es el contador que partirá de 0 y aumentará de 1 en 1 hasta el final de los elementos.
b: aumento.

Con este ejemplo seleccionaremos los elementos div impares mediante esta fórumla (an+b).

div:nth-child(2n+1) { 
	color:#9FF;
}

Aplicando los siguientes valores en nuestra fórmula 2n+1, podríamos también seleccionar los impares.
Los cálculos serían estos.

(2*0) + 1 = 1
(2*1) + 1 = 3
(2*2) + 1 = 5
(2*3) + 1 = 7
(2*4) + 1 = 9
(2*5) + 1 = 11

Obviamente no tiene mucha lógica emplear esta fórmula para seleccionar los pares o impares. Pero sí cuándo queremos seleccionar por ejemplo 1 de cada 3, incluyendo en esta selección posiciones pares e impares.

div:nth-child(3n+1) { 
     color:#9FF;
}

(3*0) + 1 = 1
(3*1) + 1 = 4
(3*2) + 1 = 7
(3*3) + 1 = 10

Esta fórmula puede tomar tantos valores como se te ocurran y seas capaz de dar utilidad.

Desde aquí

Puedes descargar un archivo con el código de estos ejemplos. Habrá código comentado para que puedas ir probando uno a uno.
La contraseña para descomprimir es: untitled.es

@eneakao

4 enlaces a “Pseudo-clases estructurales CSS3 – Fórmula :nth-child

  1. Pingback: Pseudo-clases estructurales CSS3 – Fórmula :nth-child | Recursos | Scoop.it

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>