De power0 a power4, y la familia suave
Los eases polinómicos y sus parientes trigonométricos y exponenciales, con las cifras exactas de cada curva para poder compararlos sin adivinar.
Los eases de potencia son la columna vertebral del catálogo: cinco curvas que solo se diferencian en el exponente y que cubren la mayor parte de las animaciones de interfaz. Al lado viven tres familias más —seno, círculo y exponencial— que no son potencias y que ocupan huecos que las potencias no cubren bien. La confusión habitual es tratarlas como una lista de sabores y elegir por nombre; la forma útil de verlas es como un continuo de agresividad en el arranque, y para eso hacen falta números.
- Relacionar cada
powerNcon su exponente y con sus nombres alternativos. - Comparar cuantitativamente el efecto de subir el exponente.
- Situar
sine,circyexporespecto a la escala de potencias. - Elegir la variante correcta para movimientos de entrada, de salida y de recolocación.
Las potencias son un único polinomio con un exponente
powerN corresponde al polinomio de exponente N + 1. La numeración empieza en cero porque power0 es el caso degenerado sin curvatura: la recta.
| Nombre | Alias | Exponente |
|---|---|---|
power0 |
none, linear |
1 |
power1 |
quad |
2 |
power2 |
cubic |
3 |
power3 |
quart |
4 |
power4 |
quint, strong |
5 |
La variante in es p elevado al exponente. La out es la misma reflejada. Eso es literalmente todo el código:
const easeIn = (n) => (p) => p ** n;
const easeOut = (n) => (p) => 1 - (1 - p) ** n;
Comparadas en cinco puntos del recorrido, las variantes out dan estas cifras. Cada fila dice qué fracción del recorrido lleva hecha el elemento en ese instante:
| Ease | 10% | 25% | 50% | 75% | 90% |
|---|---|---|---|---|---|
power0 |
0,100 | 0,250 | 0,500 | 0,750 | 0,900 |
power1.out |
0,190 | 0,438 | 0,750 | 0,938 | 0,990 |
power2.out |
0,271 | 0,578 | 0,875 | 0,984 | 0,999 |
power3.out |
0,344 | 0,684 | 0,938 | 0,996 | 1,000 |
power4.out |
0,410 | 0,763 | 0,969 | 0,999 | 1,000 |
Esa tabla dice más que cualquier descripción cualitativa. Con power4.out, al 50% del tiempo el elemento ya ha recorrido el 96,9% de la distancia: la segunda mitad de la animación es prácticamente inmóvil. Con power1.out, al 50% lleva el 75%, que sigue dejando un cuarto del camino para la segunda mitad.
De ahí sale la regla operativa que sustituye al criterio de gusto: subir el exponente concentra el movimiento al principio y alarga la cola de reposo. Y de ahí sale el efecto perceptivo: power4.out se siente más rápido que power1.out con la misma duración, aunque tarden lo mismo, porque el ojo juzga la velocidad por lo que pasa al principio y la cola casi inmóvil no se registra como movimiento.
Ese es también su riesgo. Un power4.out de un segundo se percibe como una animación de 400 milisegundos con 600 de nada, y la “nada” es tiempo durante el cual el elemento sigue formalmente ocupado y no se puede reutilizar. Como criterio, cuanto mayor sea el exponente, más corta debe ser la duración nominal.
Dos animaciones de la misma duración con power1.out y power4.out no se sienten igual de largas. Si vas a cambiar el ease de una animación existente a uno de exponente mayor, la duración normalmente hay que subirla, no bajarla, para que la sensación se mantenga. Es contraintuitivo y es la causa de que un cambio de ease “rompa” el ritmo de una coreografía entera.
Sine, circ y expo
Estas tres no son polinomios y ocupan posiciones concretas en el continuo.
sine es el cuarto de onda de un coseno. Es la curva más suave del catálogo, más suave incluso que power1, y su rasgo distintivo es que su derivada en el extremo es cero de la forma más “gradual” posible. Comparada en los mismos puntos:
| Ease | 10% | 25% | 50% | 75% | 90% |
|---|---|---|---|---|---|
sine.out |
0,156 | 0,383 | 0,707 | 0,924 | 0,988 |
power1.out |
0,190 | 0,438 | 0,750 | 0,938 | 0,990 |
Está entre lineal y power1. Es el ease correcto para movimientos que deben notarse poco: un desplazamiento de fondo, un cambio de color, una respiración. Es también el mejor para animaciones cíclicas, porque encadenar sine.inOut con yoyo produce un movimiento continuo sin la parada perceptible que dejan las potencias.
circ es un cuarto de circunferencia. Su rasgo es que la derivada en el extremo de la variante in es cero y en el otro extremo es infinita: la curva llega al final con pendiente vertical.
| Ease | 10% | 25% | 50% | 75% | 90% |
|---|---|---|---|---|---|
circ.out |
0,436 | 0,661 | 0,866 | 0,968 | 0,995 |
Fíjate en el 10%: circ.out ya lleva el 43,6% recorrido, más que power4.out. Pero al 50% lleva menos que power2.out. Es una curva con arranque brutal y frenada mucho más suave que las potencias equivalentes, y esa combinación es difícil de conseguir con exponentes. Su nicho: cosas pesadas que salen disparadas y se posan, como un panel que aparece de golpe y encaja.
expo es la más agresiva del catálogo.
| Ease | 10% | 25% | 50% | 75% | 90% |
|---|---|---|---|---|---|
expo.out |
0,497 | 0,823 | 0,977 | 0,998 | 1,000 |
A la décima parte del tiempo ya está a mitad de camino, y a la mitad del tiempo está prácticamente en el destino. Es el ease del “esto ya está hecho, deja de mirarlo”. Funciona muy bien en desapariciones —algo que se va y no vuelve— y muy mal en apariciones, donde el usuario necesita ver de dónde viene el elemento para entender la relación espacial.
La variante expo.in es el complemento: durante la mayor parte del tiempo no pasa nada visible y al final el elemento se dispara. Es lo que quieres para una salida que sugiere aceleración fuera de pantalla.
Elegir la variante
La regla es tan estable que se puede enunciar como tres frases y casi nunca falla.
Lo que entra usa out. Un elemento que aparece debe llegar rápido y posarse. El usuario ve el destino cuanto antes y la cola le da tiempo a asimilarlo. Es también por lo que el ease por defecto de GSAP es power1.out.
Lo que sale usa in. Un elemento que se va debe empezar despacio —para que el usuario registre que se está yendo— y acelerar al final. Si sale con out, el arranque brusco se lee como una desaparición y se pierde la relación entre el elemento y el sitio al que se fue.
Lo que se mueve dentro de la pantalla usa inOut. Un elemento que se recoloca sin entrar ni salir tiene principio y final visibles, así que necesita frenar en los dos extremos. Un out en un movimiento interno se lee como un tirón inicial.
// Entrada.
gsap.from('.modal', { y: 40, autoAlpha: 0, duration: 0.45, ease: 'power2.out' });
// Salida, mas rapida y con la curva contraria.
gsap.to('.modal', { y: 30, autoAlpha: 0, duration: 0.3, ease: 'power2.in' });
// Recolocacion dentro de la pantalla.
gsap.to('.tarjeta', { x: 240, duration: 0.6, ease: 'power2.inOut' });
Si tuvieras que elegir un solo ease para toda una aplicación, power2.out es la respuesta, y no por moda. La razón es que las curvas de aceleración estándar de las plataformas nativas —las que llevan décadas siendo afinadas por equipos de diseño con acceso a estudios de percepción— son aproximaciones muy cercanas a un polinomio cúbico con salida. Las curvas de material y las de las plataformas de Apple caen todas en esa vecindad, y no por coincidencia: es el punto donde el movimiento se lee como intencionado sin leerse como exagerado.
Lo que sí conviene entender es cuándo salirse. Se sube el exponente cuando el elemento es grande y recorre mucha distancia, porque un objeto grande moviéndose despacio se percibe como pesado y torpe. Se baja cuando el elemento es pequeño o el recorrido es corto, porque una curva agresiva sobre veinte píxeles no se ve como energía sino como un parpadeo. Es la misma relación entre tamaño y velocidad que en la animación clásica, y se resume en una frase: las cosas grandes se mueven en curvas más pronunciadas, las pequeñas en curvas más planas.
Construye la tabla comparativa tú mismo: recorre las siete familias con gsap.parseEase, evalúa cada una en los cinco puntos, y monta una tabla en el DOM. Después añade una fila con la derivada numérica en p = 0 y en p = 1 para cada ease, y ordena la tabla por esa derivada inicial. Verás que el orden que sale coincide exactamente con la sensación de agresividad.