diff --git a/example2.html b/example2.html new file mode 100644 index 0000000..3b5cdbc --- /dev/null +++ b/example2.html @@ -0,0 +1,61 @@ + + + scroll-to - smooth javascript element scrolling with requestAnimationFrame + + + +
+ +
+ + + + + diff --git a/index.js b/index.js index 152e777..201451a 100644 --- a/index.js +++ b/index.js @@ -23,8 +23,13 @@ function scrollTo(x, y, options) { options = options || {}; // start position - var start = scroll(); - + var start = scroll(options.box); + + if (options.box) { + y += options.box.scrollTop || 0; + x += options.box.scrollLeft || 0; + } + // setup tween var tween = Tween(start) .ease(options.ease || 'out-circ') @@ -33,7 +38,11 @@ function scrollTo(x, y, options) { // scroll tween.update(function(o){ - window.scrollTo(o.left | 0, o.top | 0); + if (options.box) { + options.box.scrollTop = o.top; + options.box.scrollLeft = o.left; + } + else window.scrollTo(o.left | 0, o.top | 0); }); // handle end @@ -59,8 +68,8 @@ function scrollTo(x, y, options) { * @api private */ -function scroll() { - var y = window.pageYOffset || document.documentElement.scrollTop; - var x = window.pageXOffset || document.documentElement.scrollLeft; +function scroll(box) { + var y = (box && box.scrollTop) || this.pageYOffset || document.documentElement.scrollTop; + var x = (box && box.scrollLeft) || this.pageXOffset || document.documentElement.scrollLeft; return { top: y, left: x }; -} +} \ No newline at end of file