Tema 22 · Efectos y Sombras

Sombras, Filtros Visuales y Glassmorphism

Aprende a dotar a tus interfaces de profundidad visual: sombras suaves realistas con box-shadow, filtros gráficos con filter y el elegante efecto de cristal esmerilado con backdrop-filter.

Sombras de Caja: box-shadow

La propiedad box-shadow proyecta sombras exteriores o interiores para simular elevación y jerarquía espacial en tarjetas, botones y modales.

/* Sintaxis: offset-x | offset-y | blur-radius | spread-radius | color */
.tarjeta-elevada {
  box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 
              0 4px 6px -2px rgba(0, 0, 0, 0.05);
}

/* Sombra interna para campos de texto hundidos */
.campo-hundido {
  box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.08);
}

Filtros Gráficos Modernos: La Propiedad filter

CSS3 permite aplicar efectos de edición gráfica en tiempo real directamente en el navegador sin editar la imagen original:

Filtro Sintaxis Efecto
blur() filter: blur(4px); Desenfoque gaussiano suave.
grayscale() filter: grayscale(100%); Convierte a escala de grises blanco y negro.
brightness() filter: brightness(1.2); Aumenta o reduce la luminosidad.
drop-shadow() filter: drop-shadow(0 4px 6px rgba(0,0,0,0.2)); Sombra proyectada que respeta la silueta transparente de imágenes PNG o iconos SVG.

Efecto de Cristal Translúcido (Glassmorphism)

Combinando un fondo semitransparente con backdrop-filter: blur(), logramos el popular efecto de vidrio esmerilado que desenfoca lo que pasa por detrás:

.tarjeta-cristal {
  background: rgba(255, 255, 255, 0.25);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1px solid rgba(255, 255, 255, 0.3);
  border-radius: 16px;
}

⚡ Efecto de Cristal (Glassmorphism) y Sombras Suaves

Observa cómo la tarjeta central desenfoca el fondo de gradiente vibrante con backdrop-filter, complementado con sombras multicapa realistas:

index.html
Solo lectura
<!DOCTYPE html>
<html lang="es">
<head>
  <meta charset="UTF-8">
  <title>Efectos y Glassmorphism CSS3</title>
  <style>
    body {
      font-family: Arial, Helvetica, sans-serif;
      margin: 0;
      padding: 30px;
      /* Fondo colorido con círculos de gradiente */
      background: radial-gradient(circle at 10% 20%, #3b82f6 0%, #1e3a8a 90%);
      min-height: 100vh;
      display: flex;
      align-items: center;
      justify-content: center;
      box-sizing: border-box;
    }

    /* Tarjeta estilo Glassmorphism */
    .tarjeta-glass {
      background: rgba(255, 255, 255, 0.18);
      backdrop-filter: blur(16px);
      -webkit-backdrop-filter: blur(16px);
      border: 1px solid rgba(255, 255, 255, 0.35);
      border-radius: 20px;
      padding: 32px;
      max-width: 420px;
      color: white;
      box-shadow: 0 20px 40px rgba(0, 0, 0, 0.25);
      text-align: center;
    }

    .badge-cristal {
      display: inline-block;
      background: rgba(255, 255, 255, 0.2);
      border: 1px solid rgba(255, 255, 255, 0.3);
      padding: 4px 14px;
      border-radius: 20px;
      font-size: 0.8rem;
      font-weight: bold;
      text-transform: uppercase;
      margin-bottom: 15px;
      letter-spacing: 0.05em;
    }

    h2 {
      margin-top: 0;
      margin-bottom: 10px;
      font-size: 1.6rem;
      text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
    }

    p {
      color: rgba(255, 255, 255, 0.9);
      font-size: 0.95rem;
      line-height: 1.6;
      margin-bottom: 24px;
    }

    .btn-brillante {
      background: #ffffff;
      color: #1e3a8a;
      border: none;
      padding: 12px 28px;
      border-radius: 30px;
      font-weight: 700;
      font-size: 0.95rem;
      cursor: pointer;
      box-shadow: 0 10px 20px -5px rgba(0, 0, 0, 0.3);
      transition: transform 0.2s ease, box-shadow 0.2s ease;
    }

    .btn-brillante:hover {
      transform: translateY(-2px);
      box-shadow: 0 15px 25px -5px rgba(0, 0, 0, 0.4);
    }
  </style>
</head>
<body>

  <div class="tarjeta-glass">
    <span class="badge-cristal">Glassmorphism</span>
    <h2>Diseño con Efecto Cristal</h2>
    <p>
      Esta tarjeta utiliza <code>backdrop-filter: blur(16px)</code> y un fondo RGBA semitransparente, permitiendo que la luz del gradiente inferior se filtre suavemente con elegancia moderna.
    </p>
    <button class="btn-brillante" onclick="alert('¡Efecto Glassmorphism activo!')">
      Explorar Componente &raquo;
    </button>
  </div>

</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.