Tema 23 · Transiciones y Transform

Transiciones Suaves y Transformaciones 2D

Aprende a dar vida a tus interfaces con transiciones suaves en CSS3 (propiedad, duración, curva de aceleración) y modificaciones espaciales con transform (scale, rotate, translate).

Transiciones en CSS3: La Propiedad transition

Las transiciones permiten que el cambio de una propiedad de CSS ocurra gradualmente a lo largo de un período de tiempo en lugar de producirse de forma instantánea y brusca.

/* Sintaxis abreviada: propiedad | duración | función de aceleración | retraso */
.boton-interactivo {
  background-color: #2563eb;
  transition: all 0.3s ease; /* Transición fluida de 300 milisegundos */
}

.boton-interactivo:hover {
  background-color: #1d4ed8;
  transform: translateY(-3px); /* Se eleva suavemente */
}
  • Duración: Expresada en segundos (0.3s) o milisegundos (300ms).
  • Timing Functions: ease (aceleración suave natural), linear (velocidad constante), ease-in-out o cubic-bezier() para rebotes.
  • Rendimiento de 60 FPS: Para animaciones perfectamente fluidas que no ralenticen el navegador, anima exclusivamente transform y opacity (aceleradas por la tarjeta gráfica/GPU). Evita animar width, height o margin en hover.

Transformaciones Espaciales 2D: La Propiedad transform

Función de Transformación Sintaxis de Ejemplo Efecto Físico
translate(x, y) transform: translateY(-6px); Mueve el elemento en los ejes horizontal o vertical sin alterar a sus vecinos.
scale(factor) transform: scale(1.05); Aumenta o reduce el tamaño del elemento proporcionalmente.
rotate(ángulo) transform: rotate(45deg); Gira el elemento alrededor de su centro según los grados indicados.
skew(x, y) transform: skewX(-10deg); Inclina o sesga el elemento creando una perspectiva angular dinámica.

⚡ Galería Interactiva con Efectos de Elevación y Rotación

Pasa el cursor sobre las tarjetas y el botón para experimentar la suavidad de las transiciones a 60 FPS combinadas con scale y translate:

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

    .rejilla-efectos {
      display: flex;
      gap: 20px;
      flex-wrap: wrap;
      margin-bottom: 30px;
    }

    .tarjeta-efecto {
      background: white;
      border: 1px solid #cbd5e1;
      border-radius: 12px;
      padding: 24px;
      width: 220px;
      text-align: center;
      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.05);
      cursor: pointer;
      /* Transición suave de transformación y sombra */
      transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.25s ease;
    }

    /* 1. Efecto Elevación */
    .efecto-elevacion:hover {
      transform: translateY(-8px);
      box-shadow: 0 15px 25px -5px rgba(0, 0, 0, 0.12);
      border-color: #38bdf8;
    }

    /* 2. Efecto Zoom Escalar */
    .efecto-zoom:hover {
      transform: scale(1.08);
      box-shadow: 0 15px 25px -5px rgba(0, 0, 0, 0.12);
      border-color: #10b981;
    }

    /* 3. Efecto Rotación Sutil */
    .efecto-rotacion:hover {
      transform: rotate(3deg) scale(1.04);
      box-shadow: 0 15px 25px -5px rgba(0, 0, 0, 0.12);
      border-color: #f59e0b;
    }

    .icono-caja {
      font-size: 2.2rem;
      margin-bottom: 12px;
      display: inline-block;
      transition: transform 0.3s ease;
    }

    .tarjeta-efecto:hover .icono-caja {
      transform: scale(1.2);
    }

    /* Botón con micro-interacción al hacer clic */
    .btn-pulsable {
      background: #2563eb;
      color: white;
      border: none;
      padding: 12px 24px;
      border-radius: 8px;
      font-weight: bold;
      font-size: 1rem;
      cursor: pointer;
      transition: transform 0.15s ease, background-color 0.2s ease;
    }

    .btn-pulsable:hover {
      background: #1d4ed8;
      transform: translateY(-2px);
    }

    .btn-pulsable:active {
      transform: scale(0.96); /* Sensación táctil de botón presionado */
    }
  </style>
</head>
<body>

  <h3>Micro-interacciones Fluidas en Kilopolis</h3>
  <p style="color: #64748b; margin-bottom: 25px;">
    Pasa el puntero sobre cada tarjeta para activar las transformaciones aceleradas por GPU:
  </p>

  <div class="rejilla-efectos">
    <div class="tarjeta-efecto efecto-elevacion">
      <div class="icono-caja">🚀</div>
      <h4 style="margin:0 0 6px 0;">translateY</h4>
      <p style="margin:0; font-size:0.85rem; color:#64748b;">Elevación de tarjeta</p>
    </div>

    <div class="tarjeta-efecto efecto-zoom">
      <div class="icono-caja">🔍</div>
      <h4 style="margin:0 0 6px 0;">scale(1.08)</h4>
      <p style="margin:0; font-size:0.85rem; color:#64748b;">Aumento de escala</p>
    </div>

    <div class="tarjeta-efecto efecto-rotacion">
      <div class="icono-caja">🎨</div>
      <h4 style="margin:0 0 6px 0;">rotate(3deg)</h4>
      <p style="margin:0; font-size:0.85rem; color:#64748b;">Inclinación lúdica</p>
    </div>
  </div>

  <button class="btn-pulsable">
    Haz Clic para Probar el Efecto :active &raquo;
  </button>

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