Why Animator.js?
Efficient
Pure CSS animation, great performance.
Flexible
Configure your animation in various ways.
Light
Less than 3KB, no dependency.
Get started
Install via npm
npm install animatorjs
// In JS
import { Queue, Frame } from 'animatorjs';
Use CDN
<script src="https://unpkg.com/animatorjs@latest/dist/animator.min.js"></script>
The basic one
Result
DIV
Javascript
new Queue(square, new Frame({ transform: 'rotateZ(360deg)' }, 2000), 0, true);
Let's do something fun
Result
DIV
CSS
.frame-1 { margin-left: 200px; }
.frame-2 { transform: rotateZ(360deg); }
.frame-3 { transform: rotateZ(0); }
.frame-4 { margin-left: 0; }
Javascript
var frames = [];
frames[0] = new Frame('.frame-1', 1000);
frames[1] = new Frame('.frame-2', 600);
frames[2] = new Frame('.frame-3', 600);
frames[3] = new Frame('.frame-4', 1000);
var q = new Queue(square, frames, 0, true);
var paused = false;
function switchState() {
if(paused) {
q.resume();
} else {
q.pause();
}
paused = !paused;
}
If you are curious about the blue ball...
See the Pen Animator.js example by Gao (@gao-sun) on CodePen.
Document
class Animator.Frame
// Constrcutor
new Frame(styles, configs)
Both styles/configs can be a CSS selector string or an object. For the styles object, just write the same keys and values as CSS. For example:
{ background: 'rgba(100,100,100,.5)', transform: 'translateX(100px) rotateZ(90deg)' }
The configs object is almost the same as CSS animation properties, but without the prefix "animation-". Note: "play-state" and "name" are not supported. For example:
{ 'duration': '.5s', 'fill-mode': 'forwards', 'timing-function': 'linear' }
It's also fine if you'd like to configure the frame by CSS, and don't forget the prefix:
/* In CSS */
.frame { margin-left: 100px; transform: translateX(100px); }
.config { animation-duration: .5s; animation-fill-mode: forwards; }
// In JS
new Frame('.frame', '.config')
class Animator.Queue
// Constrcutors
new Queue(doms, frames, options)
new Queue(doms, frames, count)
new Queue(doms, frames, instant)
new Queue(doms, frames, count, instant)
// Methods
Queue.play();
Queue.pause();
Queue.resume();
Queue.restart();
// Default option values
options = {
startFrom: 0,
pauseAt: [],
prefix: false,
count: 1,
clear: true,
applyOnEnd: false,
instant: false
};
// Promises
Queue.play();
(new Queue()).getPromise(); // Is a Promise when instant=true
Explanations:
doms: An Array of HTML DOMs or a single HTML DOM.
frames: An Array of Frame() classes or a single Frame().
options.startFrom:
A single number.
Animator.js will start from a specific frame, while 0 is the initial state of the dom(s) and 1 is the first frame you give.
options.pauseAt:
A single number or an array of numbers.
Animator.js will pause at the frame(s) you specify,
and a call of Queue.resume() is needed to resume the animation.
options.prefix:
If it's true,
Animator.js will generate extra '-webkit-', '-moz-' and '-o-' prefixes to every animation-related property.
options.count:
Total play count, while 0 equals infinite.
options.clear:
If it's true, Animator.js will clean up all the properties and styles added when animation ends.
options.applyOnEnd:
If it's true, Animator.js will apply all the styles of the last frame to doms when animation ends.
options.instant:
If it's true, Animator.js will play the animation instantly once Queue() constructed.