Allows animating scrollTop and/or scrollLeft of an HTML element. Uses
requestAnimationFrame to provide smooth animations and returns a Promise to
notify when the animation is completed.
Install with bower:
bower install animated-scrollOr with npm:
npm install animated-scrollOr simply download the latest release.
The pre-built files can be found in the dist/ directory.
dist/AnimatedScroll.min.js is minified and production-ready. It has a UMD
wrapper so you can access it as:
var AnimatedScroll = require('animated-scroll');
// or
import AnimatedScroll from 'animated-scroll';
// or
define([ 'path/to/animated-scroll' ], function (AnimatedScroll) {});
// or
var AnimatedScroll = window.AnimatedScroll;var element = document.getElementById('myElement');
var scroll = new AnimatedScroll(element);
scroll.top(100).then(function (newTop) {
// newTop === 100
console.log('#myElement\'s scrollTop is now', newTop);
});
scroll.left(100).then(function (newLeft) {
// newLeft === 100
console.log('#myElement\'s scrollLeft is now', newLeft);
});
scroll.to({ left: 100, top: 100 }).then(function (coords) {
console.log('#myElement\'s scrollTop is now', coords.top);
console.log('#myElement\'s scrollLeft is now', coords.left);
});Animates the scrollTop of element from it's current scrollTop to the new
scrollTop in a time-frame of duration and using the provided easing
function (duration and easing are optional).
It returns a promise which is resolved with the value of the new scrollTop
when the animation is complete.
duration is in milliseconds and defaults to 400 if not provided. If set to 0
or false, then the scrollTop is set without animating. In this case an
already fulfilled promise is returned.
If no easing is provided and duration is provided then the default easing
function used is easeInOutQuad.
Calling .top on an element while a scrollTop animation is currently ongoing
will stop that animation and start a new one i.e. animations are not queued. You
can queue animations by hooking into the .then of the returned promise.
Exactly the same as .top but for scrollLeft :)
Convinient way to animate both scrollTop and scrollLeft. Accepts an object
with top and left properties and returns a promise which resolves with an
object containing the new top and left values.
Stops any currently-running animation of scrollTop.
Stops any currently-running animation of scrollLeft.
Stops any currently-running animation of scrollLeft or scrollTop.
Contributions are welcomed! Here are the contribution guidelines.
First clone the repository and install dependencies:
npm installTo run tests:
npm testTo lint the code:
npm run lintTo make a production build:
npm run build