Tema 21 · Pseudoclases y Elementos Virtuales

Pseudoclases y Pseudoelementos (::before, ::after)

Aprende a estilizar estados interactivos del usuario con pseudoclases (:hover, :focus, :nth-child) y a generar elementos virtuales cosméticos con los pseudoelementos ::before y ::after.

Pseudoclases: Selección por Estado o Estructura

Una pseudoclase (indicada con un solo dos puntos :) selecciona un elemento cuando se encuentra en un estado dinámico específico o cumple una posición matemática dentro del árbol HTML.

Pseudoclase Tipo Cuándo se Activa
:hover Interacción El puntero del ratón sobrevuela el elemento.
:focus / :focus-visible Accesibilidad Un campo de formulario o enlace recibe el foco del teclado o cursor.
:active Interacción El usuario mantiene presionado el botón del ratón sobre el elemento.
:nth-child(even) / :nth-child(2n) Estructural Selecciona filas pares de una tabla o lista (efecto cebra).
:not(.excluir) Filtro de negación Aplica a todos los elementos excepto a los que tengan la clase indicada.

Pseudoelementos: Creación de Nodos Virtuales (::before y ::after)

Un pseudoelemento (indicado con doble dos puntos ::) permite estilizar partes de un elemento o inyectar contenido cosmético sin ensuciar el HTML original con etiquetas <div> o <span> innecesarias.

¡Regla obligatoria! Los pseudoelementos ::before y ::after requieren la propiedad content: "". Si omites content, el navegador no creará el nodo visual en el árbol de renderizado.
/* Inserta una pequeña línea decorativa debajo de los títulos */
.titulo-linea {
  position: relative;
  display: inline-block;
}

.titulo-linea::after {
  content: "";
  position: absolute;
  bottom: -6px;
  left: 0;
  width: 50%;
  height: 3px;
  background-color: #2563eb;
  border-radius: 2px;
}

⚡ Lista Cebra con :nth-child y Subrayado Mágico con ::after

Pasa el cursor sobre los botones y observa el efecto de subrayado animado generado con ::after y las filas alternadas con :nth-child(even):

index.html
Solo lectura
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <title>Pseudoclases y Pseudoelementos</title>
  <style>
    body {
      font-family: Arial, Helvetica, sans-serif;
      background-color: #f8fafc;
      margin: 0;
      padding: 25px;
      color: #0f172a;
    }

    /* Subrayado animado con ::after */
    .enlace-magico {
      position: relative;
      color: #2563eb;
      text-decoration: none;
      font-weight: bold;
      font-size: 1.1rem;
      padding-bottom: 4px;
      display: inline-block;
      margin-bottom: 25px;
    }

    .enlace-magico::after {
      content: "";
      position: absolute;
      bottom: 0;
      left: 0;
      width: 0;
      height: 3px;
      background: #2563eb;
      transition: width 0.3s ease;
      border-radius: 2px;
    }

    .enlace-magico:hover::after {
      width: 100%; /* El subrayado se despliega suavemente */
    }

    /* Lista tipo cebra con :nth-child */
    .lista-cebra {
      list-style: none;
      padding: 0;
      max-width: 480px;
      border: 1px solid #cbd5e1;
      border-radius: 8px;
      overflow: hidden;
      background: white;
    }

    .lista-cebra li {
      padding: 12px 18px;
      font-size: 0.95rem;
      border-bottom: 1px solid #f1f5f9;
      transition: background 0.2s ease;
    }

    /* Filas pares con color de fondo suave */
    .lista-cebra li:nth-child(even) {
      background-color: #f8fafc;
    }

    /* Efecto hover interactivo */
    .lista-cebra li:hover {
      background-color: #eff6ff;
      color: #1e40af;
      cursor: pointer;
    }

    /* Primer elemento destacado */
    .lista-cebra li:first-child {
      font-weight: bold;
    }
  </style>
</head>
<body>

  <h3>Efecto de Subrayado Virtual con ::after</h3>
  <a href="#" class="enlace-magico" onclick="return false;">
    Pasa el cursor sobre este enlace interactivo &raquo;
  </a>

  <h3>Tabla de Cursos con :nth-child(even) y :hover</h3>
  <ul class="lista-cebra">
    <li>1. Fundamentos de CSS3 y Selectores (Primero)</li>
    <li>2. El Modelo de Caja y Dimensionamiento</li>
    <li>3. Flexbox Unidimensional y Alineación</li>
    <li>4. CSS Grid Bidimensional y Fracciones</li>
    <li>5. Animaciones fluidas con @keyframes</li>
  </ul>

</body>
</html>
Pruébalo tú mismo » Se abre en una nueva pestaña con ejecución en vivo
🦉
¿Tienes dudas con este tema?
Sócrates AI puede darte analogías y explicarte este código paso a paso.

🚀 ¿Quieres dominar Manual Completo de CSS3, Flexbox y Grid y crear proyectos reales?

Aprende arquitectura limpia, desarrollo web moderno, buenas prácticas y despliegue en producción con nuestro Bootcamp Fullstack Developer con mentorías en vivo.

🏛️ Autoría y Propiedad Intelectual: Obra educativa original de David Amador para Kilopolis Academia (Solucionáticos), estructurada sobre las especificaciones y estándares abiertos del W3C, el estándar vivo de WHATWG y la documentación oficial de código abierto. © Todos los derechos reservados.