Files
muslim-api/public/js/jquery.localscroll-1.2.7-min.js
2024-12-08 19:38:53 +07:00

88 lines
2.3 KiB
JavaScript

/**
* jQuery.LocalScroll - Animated scrolling navigation, using anchors.
* Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
* Dual licensed under MIT and GPL.
* Date: 3/11/2009
* @author Ariel Flesler
* @version 1.2.7
**/
(function ($) {
var l = location.href.replace(/#.*/, "");
var g = ($.localScroll = function (a) {
$("body").localScroll(a);
});
g.defaults = {
duration: 1e3,
axis: "y",
event: "click",
stop: true,
target: window,
reset: true,
};
g.hash = function (a) {
if (location.hash) {
a = $.extend({}, g.defaults, a);
a.hash = false;
if (a.reset) {
var e = a.duration;
delete a.duration;
$(a.target).scrollTo(0, a);
a.duration = e;
}
i(0, location, a);
}
};
$.fn.localScroll = function (b) {
b = $.extend({}, g.defaults, b);
return b.lazy
? this.bind(b.event, function (a) {
var e = $([a.target, a.target.parentNode]).filter(d)[0];
if (e) i(a, e, b);
})
: this.find("a,area")
.filter(d)
.bind(b.event, function (a) {
i(a, this, b);
})
.end()
.end();
function d() {
return (
!!this.href &&
!!this.hash &&
this.href.replace(this.hash, "") == l &&
(!b.filter || $(this).is(b.filter))
);
}
};
function i(a, e, b) {
var d = e.hash.slice(1),
f = document.getElementById(d) || document.getElementsByName(d)[0];
if (!f) return;
if (a) a.preventDefault();
var h = $(b.target);
if (
(b.lock && h.is(":animated")) ||
(b.onBefore && b.onBefore.call(b, a, f, h) === false)
)
return;
if (b.stop) h.stop(true);
if (b.hash) {
var j = f.id == d ? "id" : "name",
k = $("<a> </a>")
.attr(j, d)
.css({
position: "absolute",
top: $(window).scrollTop(),
left: $(window).scrollLeft(),
});
f[j] = "";
$("body").prepend(k);
location = e.hash;
k.remove();
f[j] = d;
}
h.scrollTo(f, b).trigger("notify.serialScroll", [f]);
}
})(jQuery);