Files
journal_com/lr/js/unslider.min.js
wangjinlei 6e7ee3dd44 begin
2023-05-18 09:42:12 +08:00

108 lines
4.2 KiB
JavaScript

(function (e, t) {
if (!e) return t;
var n = function () {
this.el = t;
this.items = t;
this.sizes = [];
this.max = [0, 0];
this.current = 0;
this.interval = t;
this.opts = {speed: 500, delay: 3e3, complete: t, keys: !t, dots: t, fluid: t};
var n = this;
this.init = function (t, n) {
this.el = t;
this.ul = t.children("ul");
this.max = [t.outerWidth(), t.outerHeight()];
this.items = this.ul.children("li").each(this.calculate);
this.opts = e.extend(this.opts, n);
this.setup();
return this
};
this.calculate = function (t) {
var r = e(this), i = r.outerWidth(), s = r.outerHeight();
n.sizes[t] = [i, s];
if (i > n.max[0]) n.max[0] = i;
if (s > n.max[1]) n.max[1] = s
};
this.setup = function () {
this.el.css({overflow: "hidden", width: n.max[0], height: this.items.first().outerHeight()});
this.ul.css({width: this.items.length * 100 + "%", position: "relative"});
this.items.css("width", 100 / this.items.length + "%");
if (this.opts.delay !== t) {
this.start();
this.el.hover(this.stop, this.start)
}
this.opts.keys && e(document).keydown(this.keys);
this.opts.dots && this.dots();
if (this.opts.fluid) {
var r = function () {
n.el.css("width", Math.min(Math.round(n.el.outerWidth() / n.el.parent().outerWidth() * 100), 100) + "%")
};
r();
e(window).resize(r)
}
if (this.opts.arrows) {
this.el.parent().append('<p class="arrows"><span class="prev">←</span><span class="next">→</span></p>').find(".arrows span").click(function () {
e.isFunction(n[this.className]) && n[this.className]()
})
}
if (e.event.swipe) {
this.el.on("swipeleft", n.prev).on("swiperight", n.next)
}
};
this.move = function (t, r) {
if (!this.items.eq(t).length) t = 0;
if (t < 0) t = this.items.length - 1;
var i = this.items.eq(t);
var s = {height: i.outerHeight()};
var o = r ? 5 : this.opts.speed;
if (!this.ul.is(":animated")) {
n.el.find(".dot:eq(" + t + ")").addClass("active").css("background-color", localStorage.Journals_color).siblings().removeClass("active").css("background-color", '#fff');
this.el.animate(s, o) && this.ul.animate(e.extend({left: "-" + t + "00%"}, s), o, function (i) {
n.current = t;
e.isFunction(n.opts.complete) && !r && n.opts.complete(n.el)
})
}
};
this.start = function () {
n.interval = setInterval(function () {
n.move(n.current + 1)
}, n.opts.delay)
};
this.stop = function () {
n.interval = clearInterval(n.interval);
return n
};
this.keys = function (t) {
var r = t.which;
var i = {37: n.prev, 39: n.next, 27: n.stop};
if (e.isFunction(i[r])) {
i[r]()
}
};
this.next = function () {
return n.stop().move(n.current + 1)
};
this.prev = function () {
return n.stop().move(n.current - 1)
};
this.dots = function () {
var t = '<ol class="dots">';
e.each(this.items, function (e) {
t += '<li class="dot' + (e < 1 ? " active" : "") + '">' + "</li>"
});
t += "</ol>";
this.el.addClass("has-dots").append(t).find(".dot").click(function () {
n.move(e(this).index())
})
}
};
e.fn.unslider = function (t) {
var r = this.length;
return this.each(function (i) {
var s = e(this);
var u = (new n).init(s, t);
s.data("unslider" + (r > 1 ? "-" + (i + 1) : ""), u)
})
}
})(window.jQuery, false)