Easing
Easing functions make tweened motion look more natural by emulating the changes in velocity experienced by objects in the real world.
They work by accepting a progress value from 0 to 1, and returning a new one.
Popmotion comes with a number of preset easing functions, and provides methods to create new easing functions.
Import
import { easing } from 'popmotion';To use Popmotion’s easing functions with a different animation library, they’re available from the @popmotion/easing package:
npm install @popmotion/easingimport { linear } from '@popmotion/easing';Example
import { tween, easing } from 'popmotion';
tween({
ease: easing.easeOut
}).start();Presets
Popmotion comes with the following preset easing functions:
cubicBezierlineareaseIn,easeOut,easeInOutcircIn,circOut,circInOutbackIn,backOut,backInOutanticipate
Try them out by editing this live example:
Live editor
const ball = document.querySelector('#b .ball'); const ballStyler = styler(ball); tween({ to: 300, duration: 300, ease: easing.linear }).start(ballStyler.set('x'));
Easing creation
Popmotion provides the following functions to create your own easing functions:
cubicBezier
Creates cubic bezier curve easing function.
const { cubicBezier } = easing;
const longTail = cubicBezier(0, .42, 0, 1);reversed
Accepts an easing function and returns a new one that reverses the provided one.
For instance, an easeIn would become an easeOut.
const { anticipate, reversed } = easing;
const anticipateOut = reversed(anticipate);mirrored
Accepts an easing function and returns a new one that mirrors the provided one.
For instance, an easeIn would become an easeInOut.
const { anticipate, mirrored } = easing;
const anticipateInOut = mirrored(anticipate);createExpoIn
Creates an easing function based on the exponent function progress ** exponent. easeIn is createExpoIn(2).
const { createExpoIn } = easing;
const strongerEaseIn = createExpoIn(3);createBackIn
Creates an easing function with an overshoot. backIn is createBackIn(1.525).
const { createBackIn, reversed } = easing;
const strongerBackOut = reversed(createBackIn(3));createAnticipateEasing
Creates an easing function with a small anticipate and ease out. anticipate is createAnticipateEasing(1.525).
const { createAnticipateEasing } = easing;
const strongerAnticipate = createAnticipateEasing(3);