Pseudo-clases CSS
Ya dominas selectores de etiqueta, class, id y atributo. Falta una capa: a veces no quieres el mismo aspecto siempre; quieres un cambio cuando el puntero está sobre el botón, cuando alguien llega al campo con Tab o cuando el enlace ya se abrió. Para eso están las pseudo-clases — sin class nueva en el HTML.
¿Qué significa pseudo-clase?
Una pseudo-clase es una palabra que se pega al selector con dos puntos simples (:). En el HTML no ves algo como class="hover". El navegador activa la regla cuando se cumple la condición: puntero encima, foco, historial del enlace o posición entre los hijos del padre.
Pseudo-clases habituales
Empieza por estas. Hay más nombres, pero suelen bastar para empezar en UI.
📊 Pseudo-clases cotidianas de CSS
| Pseudo-clase | Cuándo se activa | Ejemplo |
|---|---|---|
:hover |
El puntero está sobre el elemento | a:hover |
:focus |
El elemento tiene foco (teclado o clic) | input:focus |
:visited |
El enlace ya se visitó (con límites de privacidad) | a:visited |
:first-child |
El elemento es el primer hijo de su padre | li:first-child |
:nth-child(n) |
El hijo n-ésimo, o impar/par | tr:nth-child(odd) |
:disabled |
El control del formulario está desactivado | button:disabled |
Hover — :hover
Con :hover el aspecto cambia mientras el puntero está sobre el elemento. Botones y enlaces se sienten vivos con un cambio pequeño — no con un salto de diseño.
Hover — feedback del botón
cssbutton:hover {
background-color: #0f766e;
color: #fff;
}
Nota sobre hover
Mantén el cambio suave. En táctil casi no hay hover real; no pongas información esencial solo dentro de :hover.
Foco — :focus
:focus selecciona el elemento activo ahora — por ejemplo tras Tab. Sin anillo de foco visible, quien usa teclado se pierde en el formulario.
Foco — anillo claro en el input
cssinput:focus {
outline: 2px solid #0f766e;
outline-offset: 2px;
}
Hover y foco: hacen falta los dos
Hover es para el puntero. Foco significa «este control está activo ahora». No quites outline sin un sustituto igual de claro.
Enlaces visitados — :visited
:visited colorea enlaces que el navegador cree que ya abriste. Suele limitarse al color (y pocas propiedades). No cuentes con cambiar padding o el diseño — la privacidad lo restringe.
Visitado — color suave del enlace
cssa:visited {
color: #6b21a8;
}
Orden de estados del enlace
Si escribes varios estados juntos, un orden seguro habitual es: link → visited → hover → focus (a veces LVHA). Así hover y foco siguen visibles también en enlaces visitados.
Primer hijo — :first-child
:first-child significa que el elemento es el primer hijo de su padre — no «el primer li de toda la página», sino el primero entre hermanos bajo ese padre.
Primer hijo — resaltar el primer ítem
cssli:first-child {
font-weight: 700;
}
Siguiente paso: :nth-child
Con :nth-child(odd) o :nth-child(3) consigues rayas o «cada tercero». Domina :first-child y luego esos patrones.
Buenos hábitos
- Pseudo-clase = dos puntos simples (
:hover); pseudo-elemento = dobles (::) — sesión siguiente - Empareja siempre el hover interactivo con un
:focusclaro - Colores visited discretos
- Prueba también con Tab, no solo con el ratón
Pruébalo tú
- Página corta con
<button>,<input>, unos enlaces y<ul>con tres<li>. - Añade
button:hover { background-color: #0f766e; color: #fff; }y pasa el ratón por el botón. - Añade
input:focus { outline: 2px solid #0f766e; }y entra al campo con Tab. - Añade
a:visited { color: #6b21a8; }, abre un enlace y vuelve. - Añade
li:first-child { font-weight: 700; }— solo el primer ítem en negrita.
Errores habituales
- Escribir
::hoveren vez de:hover— el doble es para pseudo-elementos - Estilar hover y quitar el outline de foco sin reemplazo
- Esperar libertad total de
:visitedpara cualquier propiedad - Creer que
p:first-childsignifica «el primer párrafo en cualquier sitio» - Meter texto importante solo en
:hoverpara que el usuario táctil no lo vea
Resumen
- Las pseudo-clases eligen por estado o posición con dos puntos simples
:hovery:focusdan feedback; conserva ambos:visitedcolorea el enlace abierto dentro de los límites del navegador:first-childtoma el primer hijo;:nth-childes el siguiente paso- Unos dos puntos = pseudo-clase; dobles = pseudo-elemento
- Practica con ratón, Tab y una lista corta
🧠 Pon a Prueba tu Conocimiento
Pon a Prueba tu Conocimiento
Ponte a prueba con este cuestionario interactivo y descubre qué tan bien entiendes el tema
📝 Instrucciones
- Lee cada pregunta cuidadosamente
- Selecciona la mejor respuesta para cada pregunta
- Puedes repetir el quiz tantas veces como quieras
- Tu progreso se mostrará en la parte superior