easeInOutQuint
It is slow at both ends and fast in the middle. A very strong ease: the curve is almost a wall at the fast end.
easeInOutQuint reaches 50% of its travel at 50% of the time and 90% at 64%. Its peak speed is 5x the average.
Live demo
The blue box uses the exact linear() string below, in your browser. The grey box is linear.
easeInOutQuint
linear
Your system asks for reduced motion, so the boxes rest at the end of the move.
Numbers
- 50% of travel
- 50%of the time
- 90% of travel
- 64%of the time
- After 10% of time
- 0.02%of the travel is done
- Peak speed
- 5xtimes the average
- Overshoot
- 0%stays inside the end
- Undershoot
- 0%never below the start
- linear() points
- 81at a 0.002 tolerance
- cubic-bezier
- closeworst gap 3.0 points
Copy the code
animation-timing-function: linear(0, 0, 0, 0, 0, 0, 0, 0.0001, 0.0002, 0.0003, 0.0005, 0.0008, 0.0012, 0.0018, 0.0026, 0.0037, 0.0051, 0.0069, 0.0092, 0.0121, 0.0156, 0.0199, 0.0252, 0.0314, 0.0389, 0.0477, 0.058, 0.0701, 0.084, 0.1002, 0.1187, 0.1398, 0.1638, 0.1911, 0.2219, 0.2565, 0.2952, 0.3386, 0.3869, 0.4405, 0.5, 0.5595, 0.6131, 0.6614, 0.7048, 0.7435, 0.7781, 0.8089, 0.8362, 0.8602, 0.8813, 0.8998, 0.916, 0.9299, 0.942, 0.9523, 0.9611, 0.9686, 0.9748, 0.9801, 0.9844, 0.9879, 0.9908, 0.9931, 0.9949, 0.9963, 0.9974, 0.9982, 0.9988, 0.9992, 0.9995, 0.9997, 0.9998, 0.9999, 1, 1, 1, 1, 1, 1, 1);animation-timing-function: cubic-bezier(0.84, 0, 0.16, 1);Least-squares fit to the easeInOutQuint curve; the worst gap is 3.0 points of travel. It is close, not exact: use linear() when the end of the curve matters.
el.animate({ translate: ['0 0', '240px 0'] }, { duration: 600, easing: 'linear(0, 0, 0, 0, 0, 0, 0, 0.0001, 0.0002, 0.0003, 0.0005, 0.0008, 0.0012, 0.0018, 0.0026, 0.0037, 0.0051, 0.0069, 0.0092, 0.0121, 0.0156, 0.0199, 0.0252, 0.0314, 0.0389, 0.0477, 0.058, 0.0701, 0.084, 0.1002, 0.1187, 0.1398, 0.1638, 0.1911, 0.2219, 0.2565, 0.2952, 0.3386, 0.3869, 0.4405, 0.5, 0.5595, 0.6131, 0.6614, 0.7048, 0.7435, 0.7781, 0.8089, 0.8362, 0.8602, 0.8813, 0.8998, 0.916, 0.9299, 0.942, 0.9523, 0.9611, 0.9686, 0.9748, 0.9801, 0.9844, 0.9879, 0.9908, 0.9931, 0.9949, 0.9963, 0.9974, 0.9982, 0.9988, 0.9992, 0.9995, 0.9997, 0.9998, 0.9999, 1, 1, 1, 1, 1, 1, 1)', fill: 'both' });import { easeInOutQuint } from '../../core/motion/curves.js';
import { curveToLinear } from '../../core/motion/springs.js';
const easing = curveToLinear(easeInOutQuint, { tolerance: 0.002 }); // the linear() string above
const x = easeInOutQuint(u); // per-frame code, u in 0..1When to use it, and when to avoid it
Use it for
- Moves between two resting positions: camera pushes, slides and loops.
- For quint: hero entrances and large elements that should settle with weight.
Avoid it for
- Quick UI feedback under 200 ms: the slow start delays the response.
- For quint: small elements: they seem to teleport and then crawl.
The nearest vawe ease
The closest of the nine vawe After Effects eases is swap, an RMS gap of 0.0314 in progress. After Effects and vawe set the shape with two handles, so it can be tuned where a named curve cannot.