Qué son los pseudo-elementos?

Un pseudo-elemento CSS es usado para dotar de un estilo específico a parte de un elemento. Por ejm, un pseudo-elemento se puede usar para:

  • Dar estilo a la primera letra o primera línea de un elemento.
  • Insertar contenido antes o después del contenido de un elemento.

Sintaxis

La sintaxis de un pseudo-elemento es la siguiente:

selector::pseudo-element {
  propiedad: valor;
}

El pseudo-elemento ::first-line

Este elemento es usado para añadir un estilo específico a la primera línea de un texto.

Ejm

<!DOCTYPE html>
<html>
<head>
<style>
p::first-line {
color: #ff0000;
font-variant: small-caps;
}
</style>
</head>
<body>

<p>Puedes usar el pseudo-elemento ::first-line para agregar un
efecto especial a la primera línea de un texto. Algo más de texto. Y aún más,
y más, y más, y más, y más, y más, y más,
y más, y más, y más, y más, y más.</p>

</body>
</html>

El pseudo-elemento ::first-line sólo se puede aplicar a elementos de bloque. Las siguientes propiedades pueden aplicarse con ::first-line:

  • Propiedades de fuente
  • Propiedades de color
  • Propiedades de color de fondo
  • word-spacing
  • letter-spacing
  • text-decoration
  • vertical-align
  • text-transform
  • line-height
  • clear

Observa la notación de dos puntos dobles: ::first-line frente a:first-line. Los dos puntos dobles reemplazaron la notación de dos puntos para los pseudo-elementos en CSS3. Este fue un intento del W3C de distinguir entre pseudo-clases y pseudo-elementos. La sintaxis de dos puntos se usó tanto para pseudo-clases como para pseudo-elementos en CSS2 y CSS1. Para la compatibilidad con versiones anteriores, la sintaxis de dos puntos es aceptable para los pseudoelementos CSS2 y CSS1.

El pseudo-elemento ::first-letter

Este pseudo-elemento es usado para añadir un estilo especial a la primera letra de un texto.

Ejm

p::first-letter {
  color: #ff0000;
  font-size: xx-large;
}

::first-letter sólo puede ser utilizado para elementos de bloque, y se puede aplicar a las siguientes propiedades:

  • Propiedades de fuente
  • Propiedades de color
  • Propiedades de color de fondo
  • Propiedades de margen
  • Propiedades de padding
  • Propiedades de border
  • text-decoration
  • vertical-align (sólo si float tiene el valor none)
  • text-transform
  • line-height
  • float
  • clear

Pseudo-elementos y clases

Los pseudo-elementos se pueden utilizar junto a clases HTML.

Ejm

p.intro::first-letter {
  color: #ff0000;
  font-size: 200%;
}

Múltiples pseudo-elementos

Múltiples pseudo-elementos pueden ser combinados. En el siguiente ejm, la primera letra de un párrafo será en rojo y con un tamaño xx-large. El resto de la linea será azul y con font-variant: small-caps.

Ejm

p::first-letter {
  color: #ff0000;
  font-size: xx-large;
}

p::first-line {
  color: #0000ff;
  font-variant: small-caps;
}

El pseudo-elemento ::before

Puede ser usado para insertar texto antes del contenido de un elemento.

Ejm

h1::after {
  content: url(smiley.gif);
}

El pseudo-elemento ::marker

El pseudo-elemento ::marker selecciona los marcadores de los elementos de la lista.

Ejm

::marker { 
  color: red;
  font-size: 23px;
}

El pseudo-elemento ::selection

El pseudoelemento ::selection coincide con la parte de un elemento que selecciona un usuario. Las siguientes propiedades CSS se pueden aplicar a ::selection: color, background, cursor y outline. El siguiente ejemplo hace que el texto seleccionado sea rojo sobre un fondo amarillo.

Ejm

::selection {
  color: red; 
  background: yellow;
}

Resumen

Selector Example Example description
::after p::after Inserta algo después del contenido de cada elemento <p>
::before p::before Inserta algo antes del contenido de cada elemento <p>
::first-letter p::first-letter Selecciona la primera letra de cada elemento <p>
::first-line p::first-line Selecciona la primera línea de cada elemento <p>
::marker ::marker Selecciona los marcadores de los elementos de la lista.
::selection p::selection Selecciona la parte de un elemento que es seleccionado por un usuario