Vamos a ver con un ejemplo sencillo para conocer bien las diferencias entre estas 2 pseudo-clases de css, y saber utilizarlas correctamente. Antes una corta definición:
- :nth-child selecciona el elemento que es el secundario de su elemento primario.
- :nth-of-type selecciona el elemento que es el enésimo elemento del mismo nivel de su tipo.
Ahora un ejemplo. Tenemos el siguiente html:
<section class="datos"> <h1>Información</h1> <h2>Datos personales</h2> <p>Nombre</p> <p>Apellidos</p> <p>Teléfono</p> <p>Dirección</p> </section>
Y queremos seleccionar el elemento (p) que contiene el texto de «Teléfono» (es el 3º párrafo) y aplicarle un color azul:
.datos p:nth-child(3) { color: blue; } /* MAL */
Esta forma sería incorrecta. Con p:nth-child(3), lo que hacemos es seleccionar el 3º elemento de su padre (.datos) que en este caso es el campo con texto «Nombre».
.datos p:nth-of-type(3) { color: blue } /* BIEN */
Y en cambio con p:nth-of-type(3) seleccionamos el 3º elemento del mismo tipo (párrafo) de su elemento padre (.datos)
Agradezco tu comentario 🤘