CSS: Transformación, Transición, Animación

Aprende a crear efectos visuales dinámicos con transformaciones, transiciones y animaciones CSS para interfaces web profesionales y atractivas.

Aprende CSS GRATIS y certifícate

Transformación, Transición y Animación en CSS

El CSS moderno nos ofrece herramientas extraordinarias para crear experiencias visuales dinámicas y atractivas en nuestras páginas web. Las transformaciones, transiciones y animaciones son tres pilares fundamentales que permiten dar vida a los elementos HTML, creando interfaces más interactivas y profesionales.

Transformaciones CSS

Las transformaciones CSS permiten modificar la apariencia y posición de los elementos sin alterar el flujo normal del documento. La propiedad transform es la base de estas modificaciones visuales.

Transformaciones básicas

Las transformaciones más comunes incluyen rotación, escalado, traslación y inclinación:

.rotate-element {
  transform: rotate(45deg);
}

.scale-element {
  transform: scale(1.5);
}

.translate-element {
  transform: translate(50px, 100px);
}

.skew-element {
  transform: skew(15deg, 10deg);
}

Combinando transformaciones

Una característica importante es que podemos combinar múltiples transformaciones en una sola declaración:

.complex-transform {
  transform: rotate(30deg) scale(1.2) translate(20px, 10px);
}

El orden de las transformaciones es crucial, ya que cada una se aplica sobre el resultado de la anterior.

Transform-origin

La propiedad transform-origin define el punto de referencia desde el cual se aplican las transformaciones:

.custom-origin {
  transform: rotate(45deg);
  transform-origin: top left;
}

Transiciones CSS

Las transiciones CSS crean cambios suaves entre diferentes estados de un elemento. Son ideales para efectos hover, focus y otros cambios de estado.

Sintaxis básica de transiciones

La propiedad transition controla cómo se animan los cambios de propiedades:

.smooth-button {
  background-color: blue;
  transition: background-color 0.3s ease;
}

.smooth-button:hover {
  background-color: red;
}

Propiedades de transición

Podemos controlar varios aspectos de las transiciones:

  • transition-property: especifica qué propiedades se animan
  • transition-duration: define la duración de la transición
  • transition-timing-function: controla la velocidad de la animación
  • transition-delay: establece un retraso antes de iniciar
.detailed-transition {
  width: 100px;
  height: 100px;
  background-color: green;
  transition-property: width, height, background-color;
  transition-duration: 0.5s, 0.3s, 0.2s;
  transition-timing-function: ease-in-out;
  transition-delay: 0.1s;
}

Funciones de temporización

Las funciones de temporización más utilizadas incluyen:

  • ease: inicio lento, aceleración media, final lento
  • linear: velocidad constante
  • ease-in: inicio lento, aceleración gradual
  • ease-out: inicio rápido, desaceleración gradual
  • ease-in-out: combinación de ease-in y ease-out
.timing-examples {
  transition: transform 1s ease-in-out;
}

Animaciones CSS

Las animaciones CSS ofrecen un control más preciso sobre los efectos visuales mediante keyframes, permitiendo crear secuencias complejas de cambios.

Definiendo keyframes

Los @keyframes definen los puntos clave de una animación:

@keyframes slideIn {
  0% {
    transform: translateX(-100%);
    opacity: 0;
  }
  100% {
    transform: translateX(0);
    opacity: 1;
  }
}

Aplicando animaciones

La propiedad animation conecta los keyframes con los elementos:

.animated-element {
  animation: slideIn 2s ease-in-out;
}

Propiedades de animación

Las propiedades de animación nos permiten un control detallado:

.complex-animation {
  animation-name: slideIn;
  animation-duration: 3s;
  animation-timing-function: ease-in-out;
  animation-delay: 0.5s;
  animation-iteration-count: infinite;
  animation-direction: alternate;
  animation-fill-mode: forwards;
}

Animaciones con múltiples keyframes

Podemos crear animaciones más complejas usando porcentajes intermedios:

@keyframes colorCycle {
  0% {
    background-color: red;
    transform: scale(1);
  }
  50% {
    background-color: blue;
    transform: scale(1.2);
  }
  100% {
    background-color: green;
    transform: scale(1);
  }
}

.cycling-element {
  animation: colorCycle 4s infinite;
}

Consideraciones de rendimiento

Al trabajar con transformaciones y animaciones, es importante considerar el rendimiento. Las propiedades que afectan al layout (como width, height) son más costosas que las que solo afectan a la composición (como transform, opacity).

/* Mejor rendimiento */
.efficient-animation {
  transform: translateX(100px);
  opacity: 0.5;
}

/* Menor rendimiento */
.less-efficient {
  left: 100px;
  width: 200px;
}

Las transformaciones 3D también pueden activar la aceleración por hardware:

.hardware-accelerated {
  transform: translate3d(0, 0, 0);
  will-change: transform;
}

La propiedad will-change informa al navegador sobre qué propiedades van a cambiar, permitiendo optimizaciones previas.

Empezar curso de CSS

Lecciones de este módulo de CSS

Lecciones de programación del módulo Transformación, Transición, Animación del curso de CSS.