UNPKG

scroll-to-element

Version:

Smooth scrolling to an element via selector or node reference

44 lines (33 loc) 821 B
var Tween = require('./tween'); var raf = require('raf'); function scroll() { var y = window.pageYOffset || document.documentElement.scrollTop; var x = window.pageXOffset || document.documentElement.scrollLeft; return { top: y, left: x }; } function scrollTo(x, y, options) { options = options || {}; // start position var start = scroll(); // setup tween var tween = Tween(start) .ease(options.ease || 'out-circ') .to({ top: y, left: x }) .duration(options.duration || 1000); // scroll tween.update(function(o){ window.scrollTo(o.left | 0, o.top | 0); }); // handle end tween.on('end', function(){ animate = function(){}; }); // animate function animate() { raf(animate); tween.update(); } animate(); return tween; } module.exports = scrollTo;