Los pseudo-elementos en CSS son palabras clave que se añaden a un selector para permitirte aplicar estilos a una parte específica de un elemento seleccionado o para insertar contenido antes o después del contenido real de un elemento, sin necesidad de añadir marcado HTML adicional. Se distinguen de las pseudo-clases (que seleccionan elementos en un estado particular) porque los pseudo-elementos actúan como si estuvieras añadiendo un nuevo elemento «virtual» al DOM con fines de estilización.
La sintaxis moderna y recomendada para los pseudo-elementos utiliza doble dos puntos (::) para diferenciarlos claramente de las pseudo-clases (que usan un solo dos puntos :). Aunque los navegadores suelen soportar la sintaxis de un solo dos puntos para los pseudo-elementos más antiguos (:before, :after, :first-letter, :first-line) por razones de compatibilidad con CSS2, es mejor usar :: para los nuevos y, por consistencia, para todos.
Pseudo-elementos comunes y cómo se utilizan:
::before:content para insertar contenido (texto, símbolos, imágenes pequeñas mediante url(), o incluso una cadena vacía para crear formas decorativas) antes del contenido principal del elemento.::after:content y se usa para insertar contenido después del contenido principal del elemento.::first-letter:::first-line:::selection:color, background-color, y text-shadow.::marker:<li>). Se pueden cambiar su color, font-size, content, etc.::placeholder:<input> y <textarea>.Los pseudo-elementos son una herramienta muy útil porque te permiten añadir detalles visuales y contenido cosmético sin saturar tu HTML con elementos extra solo para fines de presentación. No forman parte del DOM real, pero el navegador los renderiza como si lo fueran.