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ícateTransformació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.
Lecciones de este módulo de CSS
Lecciones de programación del módulo Transformación, Transición, Animación del curso de CSS.