Pseudoelementos ::before y ::after: efectos, badges y patrones modernos

Usa ::before y ::after para crear decoraciones, overlays y UI sin HTML extra.

::before y ::after generan cajas decorativas sin añadir HTML.

Siempre requieren content para aparecer.

Son ideales para badges, líneas, overlays y efectos de hover.

attr() permite leer datos del HTML y mostrarlos en UI.

  • Sin content, el pseudoelemento no existe.
  • ::before y ::after se comportan como elementos inline por defecto.
  • Define content: "" para crear una caja vacía y poder estilizarla.
  • Puedes cambiar su display a block o inline-block según el caso.
  • Con position absoluta controlas overlays y decoraciones.

Fundamentos: content y flujo

Sin content, el pseudoelemento no existe.

::before y ::after se comportan como elementos inline por defecto.

Define content: "" para crear una caja vacía y poder estilizarla.

Puedes cambiar su display a block o inline-block según el caso.

Posicionamiento y capas

Con position absoluta controlas overlays y decoraciones.

Asigna position: relative al contenedor para anclar el pseudoelemento.

Usa inset para cubrir todo el elemento y crear overlays.

pointer-events: none evita que el pseudoelemento bloquee clics.

  • Combina z-index con cuidado para no tapar contenido.
  • Usa opacity y blur para efectos suaves.
  • Evita overlays si dificultan la lectura.

attr(): datos desde el HTML

Ideal para etiquetas, estados y tooltips ligeros.

attr() permite leer atributos data-* y mostrarlos en UI.

Es perfecto para badges dinámicos o tooltips simples.

Mantén el texto breve para evitar que se desborde.

Efectos y microinteracciones

Crea subrayados, brillos y separadores sin más HTML.

Los pseudoelementos son perfectos para subrayados animados y líneas guía.

Usa transform y transition para efectos suaves.

Combina gradients con opacity para un look moderno.

Buenas prácticas

Úsalos como decoración, no como contenido esencial.

El contenido importante debe estar en el HTML para accesibilidad y SEO.

Los pseudoelementos son invisibles para lectores de pantalla.

Mantén un contraste adecuado si el pseudoelemento añade color.

CSS
29

Pseudoelementos ::before y ::after: efectos, badges y patrones modernos

Usa ::before y ::after para crear decoraciones, overlays y UI sin HTML extra.

Código del tema: display: grid; gap: 1rem;

📘 Teoría

Fundamentos: content y flujo

Sin content, el pseudoelemento no existe.

1

::before y ::after se comportan como elementos inline por defecto.

2

Define content: "" para crear una caja vacía y poder estilizarla.

3

Puedes cambiar su display a block o inline-block según el caso.

Posicionamiento y capas

Con position absoluta controlas overlays y decoraciones.

Asigna position: relative al contenedor para anclar el pseudoelemento.

Usa inset para cubrir todo el elemento y crear overlays.

pointer-events: none evita que el pseudoelemento bloquee clics.

  • Combina z-index con cuidado para no tapar contenido.
  • Usa opacity y blur para efectos suaves.
  • Evita overlays si dificultan la lectura.

attr(): datos desde el HTML

Ideal para etiquetas, estados y tooltips ligeros.

1

attr() permite leer atributos data-* y mostrarlos en UI.

2

Es perfecto para badges dinámicos o tooltips simples.

3

Mantén el texto breve para evitar que se desborde.

Efectos y microinteracciones

Crea subrayados, brillos y separadores sin más HTML.

1

Los pseudoelementos son perfectos para subrayados animados y líneas guía.

2

Usa transform y transition para efectos suaves.

3

Combina gradients con opacity para un look moderno.

Buenas prácticas

Úsalos como decoración, no como contenido esencial.

1

El contenido importante debe estar en el HTML para accesibilidad y SEO.

2

Los pseudoelementos son invisibles para lectores de pantalla.

3

Mantén un contraste adecuado si el pseudoelemento añade color.

🧪 Aprende probando

Ejemplo Badge en tarjeta Etiqueta sin añadir HTML extra.
Ejemplo Comillas decorativas Añade una comilla grande con ::before.
Ejemplo Subrayado animado Efecto moderno al pasar el mouse.
Ejemplo Tooltip con attr() Usa data-tip para mostrar información.
Ejemplo Demo interactiva: botones hover avanzados Explora varios patrones de hover con `::before`, `::after`, capas y transiciones para CTAs más expresivos.

🏁 Retos

Reto Reto: cinta decorativa Crea una cinta usando ::before y ::after.

🧰 Recursos

Test

Comprueba tus conocimientos con un test sobre CSS.

Test de CSS

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros. culTest

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com