jQuery scrollTo Custom Plugin by Fazlur Rahman
/*
scrollTo jQuery Plugins
Author : Fazlur Rahman
Website : http://fazlurrahman.com
Version : 1.1.0
Required Libraries :
- jQuery
- jQuery Easing
*/
( function($) {
$.fn.scrollTo = function( options ) {
// Default Options
var settings = $.extend({
selector: "html, body",
offset: 0,
duration: 500,
easing: "easeOutQuart"
}, options );
var selector = $(settings.selector);
var scrollValue = $(this).offset().top - settings.offset;
// Animate Scroll
selector.animate({ scrollTop: scrollValue }, settings.duration, settings.easing);
};
$.fn.scrollToTop = function( options ) {
// Default Options
var settings = $.extend({
selector: "html, body",
offset: 0,
duration: 1000,
easing: "easeOutQuart",
}, options );
var selector = $(settings.selector);
// Bind Click Event
return this.click( function (event) {
event.preventDefault();
selector.animate({ scrollTop: settings.offset }, settings.duration, settings.easing);
});
};
$.fn.scrollToBottom = function( options ) {
// Default Options
var settings = $.extend({
selector: "html, body",
offset: 0,
duration: 1000,
easing: "easeOutQuart",
}, options );
var selector = $(settings.selector);
// Bind Click Event
return this.click( function (event) {
event.preventDefault();
var totalHeight = 0;
selector.children().each( function() {
totalHeight = totalHeight + $(this).outerHeight(true);
});
var scrollValue = totalHeight - settings.offset;
selector.animate({ scrollTop: scrollValue }, settings.duration, settings.easing);
});
};
$.fn.scrollToLink = function( options ) {
// Default Options
var settings = $.extend({
offset: 0,
duration: 1500,
easing: "easeInOutExpo",
is_change_url: false,
}, options );
// Bind Click Event
return this.click( function (event) {
event.preventDefault();
var anchor = $(this);
var href = anchor.attr('href');
// Change URL
if ( settings.is_change_url ) history.pushState(null, null, href);
// Animate Scroll
$('html, body').stop().animate({
scrollTop: $( href ).offset().top - settings.offset
}, settings.duration, settings.easing);
});
};
} (jQuery) );