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, // render function for each frame
target: box, // set the context to bind the render function to
duration: 400, // animation step duration
initialValue: 0, // initial value passed to render function
endValue: 500, // end value to be reached in the render function
easing: t => -0.5 * (Math.cos(Math.PI*t) - 1), // easing function
onComplete: () => { console.log('first finished') }, // callback on animation step completed
}).andThen({ // multiple steps can be chained
render: renderTop,
duration: 400,
initialValue: 0,
endValue: 500,
onComplete: () => { console.log('second finished') }
})
.loop() // a set of step animations can be looped forever
.start(); // start the animation
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
noop
target
{Any} Context for the render function
null
duration
{integer} Step duration
0
easing
{function} Easing function
t => t
(linear easing)initialValue
0
endValue
1
fps
60
loop
false
onComplete
noop
Methods
start()
Start the animation
andThen(animation)
Chain another animation step
animation
and animation step
Returns current Animazione instancewait(duration)
pause the animation
duration
{integer} pause duration in ms
Returns current Animazione instanceloop()
Make the animation an infinite loop of all the currently defined steps
stop()
Stop the animation