# Pseudo-clases y pseudo-elementos

En esta lección aprenderás:

- qué son las pseudo-clases y los pseudo-elementos
- la pseudo clase :first-child
- las pseudo-clases de enlace :link y :visited
- las pseudo-clases dinámicas :hover, :active y :focus
- la pseudo-clase de idioma :lang
- los pseudo-elementos :first-line y :first-letter
- los pseudo-elementos :before y :after

## Qué son las pseudo-clases y los pseudo-elementos

Las hojas de estilo asocian características de estilo a los elementos basándose en las etiquetas de los elementos y en su posición relativa (en el árbol del documento). Las pseudo-clases y los pseudo-elementos permiten hacer referencia a determinados elementos sin basarse en la información contenida en el árbol del documento.

La sintaxis de las pseudo-clases y los pseudo-elementos es la misma: etiqueta:pseudo-elemento_o_pseudo-clase (el nombre de la etiqueta y del pseudo-elemento o de la pseudo-clase separado por dos puntos).

Volver al índice

## La pseudo-clase :first-child

Por escribir

Volver al índice

## Las pseudo-clases de enlace :link y :visited

La pseudo clase :link (o a:link) te permite especificar el aspecto de los enlaces que todavía no han sido visitados. La pseudo clase :visited (o a:visited) te permite especificar el aspecto de los enlaces que sí han sido visitados. Ten en cuenta que los navegadores "recuerdan" los enlaces visitados hasta que se borra el historial en el navegador. En Mozilla :visited no funciona demasiado bien.

| a:link { text-decoration: none; font-weight: bold; background-color: #dddddd; } | Este párrafo tiene un enlace a sí mismo. El enlace no aparece como suele ser habitual, porque aparece sin subrayar, en negrita y con color de fondo.
| a:visited { text-decoration: line-through; font-weight: bold; background-color: #dddddd; } | Este párrafo tiene un enlace a sí mismo. Cuando el enlace se ha visitado, en vez de subrayado, sale tachado.

Nota: añadir enlace a página de bugs de Mozilla.

Si asignas propiedades a la etiqueta a en la hoja de estilo, estas propiedades afectarán tanto a los enlaces como a los destinos que utilicen la etiqueta a. Pero si asignas propiedades a la pseudo-clase a:link, estas propiedades sólo afectarán a los enlaces.

| a { background-color: lightblue; } | Este párrafo contiene un enlace al párrafo siguiente. Destino definido con la etiqueta <a>.
| a:link { background-color: lightblue; } | Este párrafo contiene un enlace al párrafo siguiente. Destino definido con la etiqueta <a>.

Volver al índice

## Las pseudo-clases dinámicas :hover, :active y :focus

La pseudo-clase :hover te permite especificar el aspecto de un enlace sobre el que se encuentra el ratón. IE sólo es capaz de reconocer esta pseudo-clase aplicada a enlaces, mientras que Mozilla la reconoce en cualquier elemento (la verdad es que no los he probado todos, así que igual falla en algunos).

| p { color: black; background-color: white; } a:hover { color: white; background-color: black; } | Este párrafo está escrito en negro sobre blanco, pero cuando pasas el ratón por encima de este enlace, el enlace se escribe blanco sobre negro.
| p { color: black; background-color: white; } p:hover { color: white; background-color: black; } | Este párrafo está escrito en negro sobre blanco, pero cuando pasas el ratón por encima del párrafo, se escribe blanco sobre negro.

Contar lo que pasa cuando se gasta a la vez :link :visited y :hover (diferencias entre IE y Mozilla).

La pseudo-clase :active te permite especificar el aspecto de un enlace cuando se hace clic sobre él (y mientras se mantiene el botón del ratón apretado). IE sólo es capaz de reconocer esta pseudo-clase aplicada a enlaces, mientras que Mozilla la reconoce en cualquier elemento (la verdad es que no los he probado todos, así que igual falla en algunos).

| p { color: black; background-color: white; } a:active { color: white; background-color: black; } | Este párrafo está escrito en negro sobre blanco, pero cuando haces clic en este enlace, el enlace se escribe blanco sobre negro.
| p { color: black; background-color: white; } p:active { color: white; background-color: black; } | Este párrafo está escrito en negro sobre blanco, pero cuando hace clic en él, se escribe blanco sobre negro.

Volver al índice

Falta contar :focus

## La pseudo-clase de idioma:lang

Por escribir

Volver al índice

## Los pseudo-elementos :first-line y :first-letter

El pseudo-elemento :first-line te permite especificar el aspecto de la primera línea de texto.

p:first-line { text-transform: uppercase; } | La primera línea de este párrafo se tiene que ver en mayúsculas. Modifica el tamaño de la fuente o el tamaño de la ventana para ver cómo se modifica el aspecto del párrafo.

El pseudo-elemento :first-letter te permite especificar el aspecto de la primera letra de texto.

p:first-letter { color: red; } | La primera letra de este párrafo se tiene que ver en rojo. Y la primera de éste también.
p:first-letter { float: left; font-size: 300%; font-family: monospace; color: red; } | La primera letra de este párrafo es una letra capital, es decir, una letra más grande que ocupa varias líneas de texto. Para ello, en la hoja de estilo tienes que hacer la letra flotante y aumentar su tamaño. En este caso también he cambiado el color y el tipo de letra.

Volver al índice

## Los pseudo-elementos :before y :after

Por escribir

Volver al índice