Anime.js Animation Principles
Implement all 12 Disney animation principles using Anime.js's flexible animation engine.
-
Squash and Stretch anime({ targets: '.ball', scaleX: [1, 1.2, 1], scaleY: [1, 0.8, 1], duration: 300, easing: 'easeInOutQuad' });
-
Anticipation anime.timeline() .add({ targets: '.character', translateY: 10, scaleY: 0.9, duration: 200 }) .add({ targets: '.character', translateY: -200, duration: 400, easing: 'easeOutQuad' });
-
Staging anime({ targets: '.background', filter: 'blur(3px)', opacity: 0.6, duration: 500 }); anime({ targets: '.hero', scale: 1.1, duration: 500 });
-
Straight Ahead / Pose to Pose anime({ targets: '.element', keyframes: [ { translateX: 0, translateY: 0 }, { translateX: 100, translateY: -50 }, { translateX: 200, translateY: 0 }, { translateX: 300, translateY: -30 } ], duration: 1000 });
-
Follow Through and Overlapping Action anime.timeline() .add({ targets: '.body', translateX: 200, duration: 500 }) .add({ targets: '.hair', translateX: 200, duration: 500 }, '-=450') .add({ targets: '.cape', translateX: 200, duration: 600 }, '-=500');
-
Slow In and Slow Out anime({ targets: '.element', translateX: 300, duration: 600, easing: 'easeInOutCubic' }); // Options: easeInQuad, easeOutQuad, easeInOutQuad // easeInCubic, easeOutCubic, easeInOutCubic // spring(mass, stiffness, damping, velocity)
-
Arc anime({ targets: '.ball', translateX: 200, translateY: [ { value: -100, duration: 500 }, { value: 0, duration: 500 } ], easing: 'easeOutQuad', duration: 1000 });
// Or use SVG path anime({ targets: '.element', translateX: anime.path('.motion-path')('x'), translateY: anime.path('.motion-path')('y'), duration: 1000 });
-
Secondary Action const tl = anime.timeline(); tl.add({ targets: '.button', scale: 1.1, duration: 200 }) .add({ targets: '.icon', rotate: 15, duration: 150 }, '-=150') .add({ targets: '.particles', opacity: [0, 1], delay: anime.stagger(50) }, '-=100');
-
Timing // Fast - snappy anime({ targets: '.fast', translateX: 100, duration: 150 });
// Normal anime({ targets: '.normal', translateX: 100, duration: 300 });
// Slow - dramatic anime({ targets: '.slow', translateX: 100, duration: 600 });
// Spring physics anime({ targets: '.spring', translateX: 100, easing: 'spring(1, 80, 10, 0)' });
-
Exaggeration anime({ targets: '.element', scale: 1.5, rotate: '2turn', duration: 800, easing: 'easeOutElastic(1, 0.5)' // overshoot });
-
Solid Drawing anime({ targets: '.box', rotateX: 45, rotateY: 30, perspective: 1000, duration: 500 });
-
Appeal anime({ targets: '.card', scale: 1.02, boxShadow: '0 20px 40px rgba(0,0,0,0.2)', duration: 300, easing: 'easeOutQuad' });
Stagger Animation anime({ targets: '.item', translateY: [20, 0], opacity: [0, 1], delay: anime.stagger(100), // 100ms between each easing: 'easeOutQuad' });
Key Anime.js Features anime.timeline() - Sequence animations keyframes - Multiple poses anime.stagger() - Offset delays anime.path() - SVG motion paths Built-in easings + spring() + elastic() '-=200' - Relative offset timing anime.set() - Instant property set