# tween.js JavaScript tweening engine for easy animations, incorporating optimised Robert Penner's equations. [![NPM Version][npm-image]][npm-url] [![NPM Downloads][downloads-image]][downloads-url] [![Travis tests][travis-image]][travis-url] [![Flattr this][flattr-image]][flattr-url] [![CDNJS][cdnjs-image]][cdnjs-url] ```javascript var box = document.createElement('div'); box.style.setProperty('background-color', '#008800'); box.style.setProperty('width', '100px'); box.style.setProperty('height', '100px'); document.body.appendChild(box); // Setup the animation loop. function animate(time) { requestAnimationFrame(animate); TWEEN.update(time); } requestAnimationFrame(animate); var coords = { x: 0, y: 0 }; // Start at (0, 0) var tween = new TWEEN.Tween(coords) // Create a new tween that modifies 'coords'. .to({ x: 300, y: 200 }, 1000) // Move to (300, 200) in 1 second. .easing(TWEEN.Easing.Quadratic.Out) // Use an easing function to make the animation smooth. .onUpdate(function() { // Called after tween.js updates 'coords'. // Move 'box' to the position described by 'coords' with a CSS translation. box.style.setProperty('transform', 'translate(' + coords.x + 'px, ' + coords.y + 'px)'); }) .start(); // Start the tween immediately. ``` [Test it with CodePen](https://codepen.io/mikebolt/pen/zzzvZg) ## Installation Download the [library](https://raw.githubusercontent.com/tweenjs/tween.js/master/src/Tween.js) and include it in your code: ```html ``` You can also reference a CDN-hosted version in your code, thanks to cdnjs. For example: ```html ``` See [tween.js](https://cdnjs.com/libraries/tween.js/) for more versions. ### More advanced users might want to... #### Use `npm` ```bash npm install @tweenjs/tween.js ``` Then include the Tween.js module with the standard node.js `require`: ```javascript var TWEEN = require('@tweenjs/tween.js'); ``` And you can use Tween.js as in all other examples--for example: ```javascript var t = new TWEEN.Tween( /* etc */ ); t.start(); ``` You will need to use a tool such as `browserify` to convert code using this style into something that can be run in the browser (browsers don't know about `require`). #### Use `bower` ```bash bower install @tweenjs/tweenjs --save ``` or install an specific tag. They are git tags, and you can run `git tag` in the command line for a list if you have cloned the repository locally, or you can also check out the list in the [tween.js tags page](https://github.com/tweenjs/tween.js/tags). For example, to install `v16.3.0`: ```bash bower install @tweenjs/tweenjs#v16.3.0 ``` Then reference the library source: ```html ``` ## Features * Does one thing and one thing only: tween properties * Doesn't take care of CSS units (e.g. appending `px`) * Doesn't interpolate colours * Easing functions are reusable outside of Tween * Can also use custom easing functions ## Documentation * [User guide](./docs/user_guide.md) * [Contributor guide](./docs/contributor_guide.md) * [Tutorial](http://learningthreejs.com/blog/2011/08/17/tweenjs-for-smooth-animation/) using tween.js with three.js * Also: [libtween](https://github.com/jsm174/libtween), a port of tween.js to C by [jsm174](https://github.com/jsm174) * Also: [es6-tween](https://github.com/tweenjs/es6-tween), a port of tween.js to ES6/Harmony by [dalisoft](https://github.com/dalisoft) * [Understanding tween.js](https://mikebolt.me/article/understanding-tweenjs.html) ## Examples
Custom functions (source) |
Stop all chained tweens (source) |
||
Yoyo (source) |
Relative values (source) |
||
Repeat (source) |
Dynamic to (source) |
||
Array interpolation (source) |
Video and time (source) |
||
Simplest possible example (source) |
Graphs (source) |
||
Black and red (source) |
Bars (source) |
||
hello world (source) |