fazlurr
11/17/2016 - 11:31 PM

jQuery scrollTo Custom Plugin by Fazlur Rahman

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) );