Animazione
simple easing animations using requestAnimationFrame
Features
- custom easing
- chainable animations
- optimized frame skip
- target fps
- animation completed callback
- loop
Install
$ npm install --save animazione
Usage
<div class="box"></div>
const box = document.querySelector('.box');
const a = new Animazione({
render: renderLeft,
target: box,
duration: 400,
initialValue: 0,
endValue: 500,
easing: t => -0.5 * (Math.cos(Math.PI*t) - 1),
onComplete: () => { console.log('first finished') },
}).andThen({
render: renderTop,
duration: 400,
initialValue: 0,
endValue: 500,
onComplete: () => { console.log('second finished') }
})
.loop()
.start();
function renderLeft(val) {
this.style['left'] = val + 'px';
}
function renderTop(val) {
this.style['top'] = val + 'px';
}
API
Class: Animazione
Create a new Animazione instance.
new Animazione(animation)
animation
animation step
type: Object
render
{function} Render function
target
{Any} Context for the render function
duration
{integer} Step duration
easing
{function} Easing function
- Default:
t => t
(linear easing)
initialValue
endValue
fps
loop
onComplete
Methods
start()
Start the animation
- Returns current Animazione instance
andThen(animation)
Chain another animation step
animation
and animation step- Returns current Animazione instance
wait(duration)
pause the animation
duration
{integer} pause duration in ms- Returns current Animazione instance
loop()
Make the animation an infinite loop of all the currently defined steps
- Returns current Animazione instance
stop()
Stop the animation