Overview
The Animation module is the foundation of Anime.js, providing the JSAnimation class and animate() function for creating individual animations. It handles property interpolation, keyframes, easing, and composition.
Importing
import { animate, JSAnimation } from 'animejs';
Creating Animations
animate()
The animate() function creates and initializes a new animation.
animate(targets, parameters)
Parameters:
targets - DOM elements, objects, or CSS selector to animate
parameters - Animation configuration object
Basic Example
import { animate } from 'animejs';
// Animate a single element
animate('.box', {
translateX: 250,
rotate: 360,
duration: 1000,
ease: 'outExpo'
});
Multiple Properties
animate('.box', {
translateX: 250,
translateY: 100,
scale: 1.5,
opacity: 0.5,
backgroundColor: '#FF0000',
duration: 1500
});
Animation Parameters
Property Values
property
number | string | object | array
The target value for any animatable property
// Simple value
animate('.box', { translateX: 100 });
// From-to values
animate('.box', { translateX: [0, 100] });
// Object syntax with options
animate('.box', {
translateX: {
from: 0,
to: 100,
duration: 500,
ease: 'linear'
}
});
Timing Parameters
Animation duration in milliseconds
Delay before animation starts in milliseconds
ease
string | function
default:"outQuad"
Easing function for the animation
animate('.box', {
translateX: 250,
duration: 2000,
delay: 500,
ease: 'inOutQuad'
});
Keyframes
Array of keyframe objects for complex animations
// Duration keyframes
animate('.box', {
keyframes: [
{ translateX: 100, duration: 500 },
{ translateX: 200, duration: 500 },
{ translateX: 0, duration: 500 }
]
});
// Percentage keyframes
animate('.box', {
duration: 2000,
keyframes: {
'0%': { translateX: 0 },
'50%': { translateX: 200 },
'100%': { translateX: 0 }
}
});
Animation Control
The animate() function returns a JSAnimation instance with control methods:
Playback Methods
const animation = animate('.box', {
translateX: 250,
duration: 1000
});
// Control playback
animation.pause(); // Pause the animation
animation.resume(); // Resume playback
animation.play(); // Play forward
animation.reverse(); // Play in reverse
animation.restart(); // Restart from beginning
Seeking
// Seek to specific time
animation.seek(500); // Jump to 500ms
// Seek using progress (0-1)
animation.progress = 0.5; // Jump to 50%
// Seek to specific iteration
animation.currentIteration = 2;
State Methods
// Cancel and remove animation
animation.cancel();
// Revert to original values
animation.revert();
// Complete immediately
animation.complete();
Advanced Features
Composition Modes
How animations compose with existing animations: replace, none, or blend
animate('.box', {
translateX: 100,
composition: 'blend' // Additive composition
});
Function-Based Values
animate('.box', {
translateX: (el, index, total) => {
return index * 100; // Different value per element
},
duration: 1000
});
Modifiers
Function to modify the animated value before rendering
animate('.box', {
translateX: 100,
modifier: (value) => Math.round(value) // Round to integers
});
Looping
loop
boolean | number
default:"false"
Number of times to loop, true for infinite
Whether to alternate direction on each loop
Delay between loops in milliseconds
animate('.box', {
translateX: 250,
duration: 1000,
loop: 3,
alternate: true,
loopDelay: 500
});
Callbacks
Called when animation begins
Called on each frame update
Called when animation loops
Called when animation completes
animate('.box', {
translateX: 250,
duration: 1000,
onBegin: (anim) => console.log('Started'),
onUpdate: (anim) => console.log('Progress:', anim.progress),
onComplete: (anim) => console.log('Finished')
});
Promise Support
Animations can be awaited using .then():
const animation = animate('.box', {
translateX: 250,
duration: 1000
});
await animation.then();
console.log('Animation complete!');
Animation Properties
Read-Only Properties
Array of target elements/objects being animated
Total animation duration including loops
Duration of a single iteration
Whether animation is currently paused
Whether animation has completed
Writable Properties
const anim = animate('.box', { translateX: 250 });
// Modify playback speed
anim.speed = 2; // 2x speed
// Change time unit
anim.timeUnit = 's'; // Use seconds instead of ms
// Control current time
anim.currentTime = 500;
anim.progress = 0.5;
JSAnimation Class
For advanced use cases, you can instantiate JSAnimation directly:
import { JSAnimation } from 'animejs';
const animation = new JSAnimation(
'.box',
{ translateX: 250, duration: 1000 },
null, // parent timeline
0 // position in timeline
).init();
Most users should use the animate() function instead of instantiating JSAnimation directly.
- Timeline - Sequence multiple animations
- Timer - Base timing functionality
- Engine - Global animation engine