En artículos anteriores hemos visto qué es CSS y su sintaxis y ahora vamos a detallar la clasificación de selectores y los selectores de pseudo clase en CSS.
Clasificación de Selectores
Recuerda que podemos dividir los selectores en los siguientes bloques:
- Selectores simples
- Selectores combinados
- Selectores de pseudo clase (este articulo)
- Selectores de pseudo elemento
- Selectores de atributo
Selectores de pseudo clase
Anteriormente vimos los selectores simples y los selectores combinados, en esta ocasión veremos los selectores de estado que son aquellos selectores que utilizan el estado de un elemento para mostrarlo de una forma u otra, como cuando pasas el ratón por encima, cuando un vinculo ya lo has visitado o cuándo se enfoca un elemento.
Clasificación de pseudo clases
Existen muchas pseudo clases, las cuales se detallan en el siguiente cuadro:
Selector | Ejemplo | Descripción |
---|---|---|
:active | a:active | Selecciona el enlace activo |
:checked | input:checked | Selecciona todos los elementos marcados |
:disabled | input:disabled | Selecciona todos los elementos desactivados |
:empty | p:empty | Selecciona todos los elementos que no tienen hijos. |
:enabled | input:enabled | Selecciona todos los elementos habilitados |
:first-child | p:first-child | Selecciona todos los elementos que son el primer hijo de su padre |
:first-of-type | p:first-of-type | Selecciona cada elemento que es el primer elemento de su padre |
:focus | input:focus | Selecciona el elemento que tiene el foco |
:hover | a:hover | Selecciona enlaces al pasar el mouse por encima |
:in-range | input:in-range | Selecciona elementos con un valor dentro de un rango especificado |
:invalid | input:invalid | Selecciona todos los elementos con un valor no válido |
:lang(language) | p:lang(es) | Selecciona cada elemento con un valor de atributo lang que comienza con “es” |
:last-child | p:last-child | Selecciona todos los elementos que son el último hijo de su padre |
:last-of-type | p:last-of-type | Selecciona cada elemento que es el último elemento de su padre |
:link | a:link | Selecciona todos los enlaces no visitados |
:not(selector) | :not(p) | Selecciona cada elemento que no es un elemento |
:nth-child(n) | p:nth-child(2) | Selecciona cada elemento que es el segundo hijo de su padre |
:nth-last-child(n) | p:nth-last-child(2) | Selecciona cada elemento que es el segundo hijo de su padre, contando desde el último hijo |
:nth-last-of-type(n) | p:nth-last-of-type(2) | Selecciona cada elemento que es el segundo elemento de su padre, contando desde el último hijo |
:nth-of-type(n) | p:nth-of-type(2) | Selecciona cada elemento que es el segundo elemento de su padre |
:only-of-type | p:only-of-type | Selecciona cada elemento que es el único elemento de su padre |
:only-child | p:only-child | Selecciona cada elemento que es el único hijo de su padre |
:optional | input:optional | Selecciona elementos sin atributo “obligatorio” |
:out-of-range | input:out-of-range | Selecciona elementos con un valor fuera de un rango especificado |
:read-only | input:read-only | Selecciona elementos con un atributo “readonly” especificado |
:read-write | input:read-write | Selecciona elementos sin atributo “readonly” |
:required | input:required | Selecciona elementos con un atributo “obligatorio” especificado |
:root | root | Selecciona el elemento raíz del documento |
:target | #news:target | Selecciona el elemento #news activo actual |
:valid | input:valid | Selecciona todos los elementos con un valor válido |
:visited | a:visited | Selecciona todos los enlaces visitados |
Ejemplo 1 – Enlaces
Si utilizamos este tipo de pseudo clase podemos conseguir que los vínculos se muestren de una forma u otra según si ya se han visitado, al posicionarse encima, etc.
Un ejemplo de su utilización seria el siguiente:
div:hover { background-color: red; }
Es importante el orden de estas pseudo clases ya que deben escribirse según se muestra en el ejemplo aunque no distingue entre minúsculas y mayusculas.
/* enlace no visitado */ a:link { color: #000080; } /* enlace visitado */ a:visited { color: #000080; } /* al posicionarse encima del enlace */ a:hover { color: #000080; } /* enlace selecionado */ a:active { color: #000080; }
Ten en cuenta que las pseudo clases no son exclusivas del elemento “a” se pueden utilizar con otros como por ejemplo el elemento “div”
Ejemplo 1 – :first-child
La pseudo clase :first-child aplica el estilo al primer hijo. En el siguiente ejemplo se le aplicara el estilo al primer elemento “p” que se encuentra.
p:first-child { color: green; }
Si tuviéramos el siguiente código HTML se aplicara el estilo al párrafo 1.