Skip to content

Instantly share code, notes, and snippets.

@ScottPhillips
Forked from dbushell/gist:4131104
Created November 24, 2012 07:43
Show Gist options
  • Select an option

  • Save ScottPhillips/4138804 to your computer and use it in GitHub Desktop.

Select an option

Save ScottPhillips/4138804 to your computer and use it in GitHub Desktop.
Animate scrolling to an element or offset
/*!
* requires jQuery
* usage:
* Scroller.to({ offset: 100 });
* Scroller.to({ target: $('#main') });
*
* advanced usage (with additional easing function not provided here)
* Scroller.to({ target: $('#main'), delay: 500, multiplier: 1.5, easing: 'easeOutQuad' });
*/
var Scroller = (function()
{
var scroll = {
options: {
el: $('html:not(:animated),body:not(:animated)'),
multiplier: 1,
offset: undefined,
easing: 'swing',
delay: 0
},
_scrolling: false
};
scroll.to = function(options)
{
var height = {
top: $(window).scrollTop(),
doc: $(document).height(),
win: $(window).height()
};
if (height.doc <= height.win) {
return;
}
var config = $.extend({}, scroll.options);
config = $.extend(config, options || {});
config.offset = isNaN(config.offset) ? config.target.offset().top : config.offset;
var offset = config.offset,
distance = Math.abs(height.top - offset);
if (height.top < offset) {
var max = height.doc - height.win;
if (offset > max) {
distance -= offset - max;
}
}
if (distance) {
if (scroll._scrolling) {
scroll.stop();
}
scroll._scrolling = true;
scroll.timeout = window.setTimeout(function() {
config.el.animate({ scrollTop: Math.floor(offset) }, distance * config.multiplier, config.easing, function()
{
scroll._scrolling = false;
});
}, config.delay);
}
};
scroll.stop = function()
{
if (scroll.timeout) {
window.clearTimeout(scroll.timeout);
scroll.timeout = null;
}
scroll.options.el.stop();
scroll._scrolling = false;
};
scroll.isScrolling = function()
{
return scroll._scrolling;
};
return scroll;
})();
@kfc930
Copy link

kfc930 commented Feb 4, 2026

Professional and lifestyle discussions often benefit from resources that highlight practical guidance and evolving perspectives. For readers interested in thoughtful insights, Kathleen Nimmo Lynch provides context designed to support personal growth, organizational awareness, and adaptation in today’s environment. The guide is created to inform and inspire, offering perspectives that connect modern strategies with both professional development and collective experiences.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment