124 lines
4.9 KiB
JavaScript
124 lines
4.9 KiB
JavaScript
! function (r) {
|
|
"use strict";
|
|
"function" == typeof define && define.amd ? define("parollerjs", ["jquery"], r) : "object" == typeof module && "object" == typeof module.exports ? module.exports = r(require("jquery")) : r(jQuery)
|
|
}(function (g) {
|
|
"use strict";
|
|
var v = !1,
|
|
x = function () {
|
|
v = !1
|
|
},
|
|
b = function (r, t) {
|
|
return r.css({
|
|
"background-position": "center " + -t + "px"
|
|
})
|
|
},
|
|
k = function (r, t) {
|
|
return r.css({
|
|
"background-position": -t + "px center"
|
|
})
|
|
},
|
|
y = function (r, t, o, n) {
|
|
return "none" !== n || (n = ""), r.css({
|
|
"-webkit-transform": "translateY(" + t + "px)" + n,
|
|
"-moz-transform": "translateY(" + t + "px)" + n,
|
|
transform: "translate(0," + t + "px)" + n,
|
|
transition: o,
|
|
"will-change": "transform"
|
|
})
|
|
},
|
|
z = function (r, t, o, n) {
|
|
return "none" !== n || (n = ""), r.css({
|
|
"-webkit-transform": "translateX(" + t + "px)" + n,
|
|
"-moz-transform": "translateX(" + t + "px)" + n,
|
|
transform: "translate(" + t + "px, 0)" + n,
|
|
transition: o,
|
|
"will-change": "transform"
|
|
})
|
|
},
|
|
M = function (r, t, o) {
|
|
var n = r.data("paroller-factor"),
|
|
a = n || o.factor;
|
|
if (t < 576) {
|
|
var e = r.data("paroller-factor-xs"),
|
|
i = e || o.factorXs;
|
|
return i || a
|
|
}
|
|
if (t <= 768) {
|
|
var c = r.data("paroller-factor-sm"),
|
|
s = c || o.factorSm;
|
|
return s || a
|
|
}
|
|
if (t <= 1024) {
|
|
var u = r.data("paroller-factor-md"),
|
|
f = u || o.factorMd;
|
|
return f || a
|
|
}
|
|
if (t <= 1200) {
|
|
var l = r.data("paroller-factor-lg"),
|
|
d = l || o.factorLg;
|
|
return d || a
|
|
}
|
|
if (t <= 1920) {
|
|
var p = r.data("paroller-factor-xl"),
|
|
h = p || o.factorXl;
|
|
return h || a
|
|
}
|
|
return a
|
|
},
|
|
j = function (r, t) {
|
|
return Math.round(r * t)
|
|
},
|
|
X = function (r, t, o, n) {
|
|
return Math.round((r - o / 2 + n) * t)
|
|
},
|
|
q = function (r) {
|
|
return r.css({
|
|
"background-position": "unset"
|
|
})
|
|
},
|
|
T = function (r) {
|
|
return r.css({
|
|
transform: "unset",
|
|
transition: "unset"
|
|
})
|
|
};
|
|
g.fn.paroller = function (h) {
|
|
var m = g(window).height(),
|
|
w = g(document).height();
|
|
h = g.extend({
|
|
factor: 0,
|
|
factorXs: 0,
|
|
factorSm: 0,
|
|
factorMd: 0,
|
|
factorLg: 0,
|
|
factorXl: 0,
|
|
transition: "transform .1s ease",
|
|
type: "background",
|
|
direction: "vertical"
|
|
}, h);
|
|
return this.each(function () {
|
|
var o = g(this),
|
|
n = g(window).width(),
|
|
a = o.offset().top,
|
|
e = o.outerHeight(),
|
|
r = o.data("paroller-type"),
|
|
t = o.data("paroller-direction"),
|
|
i = o.data("paroller-transition"),
|
|
c = o.css("transform"),
|
|
s = i || h.transition,
|
|
u = r || h.type,
|
|
f = t || h.direction,
|
|
l = 0,
|
|
d = j(a, l),
|
|
p = X(a, l, m, e);
|
|
"background" === u ? "vertical" === f ? b(o, d) : "horizontal" === f && k(o, d) : "foreground" === u && ("vertical" === f ? y(o, p, s, c) : "horizontal" === f && z(o, p, s, c)), g(window).on("resize", function () {
|
|
var r = g(this).scrollTop();
|
|
n = g(window).width(), a = o.offset().top, e = o.outerHeight(), l = M(o, n, h), d = Math.round(a * l), p = Math.round((a - m / 2 + e) * l), v || (window.requestAnimationFrame(x), v = !0), "background" === u ? (q(o), "vertical" === f ? b(o, d) : "horizontal" === f && k(o, d)) : "foreground" === u && r <= w && (T(o), "vertical" === f ? y(o, p, s) : "horizontal" === f && z(o, p, s))
|
|
}), g(window).on("scroll", function () {
|
|
var r = g(this).scrollTop(),
|
|
t = g(document).scrollTop();
|
|
l = 0 === t ? 0 : M(o, n, h), d = Math.round((a - r) * l), p = Math.round((a - m / 2 + e - r) * l), v || (window.requestAnimationFrame(x), v = !0), "background" === u ? "vertical" === f ? b(o, d) : "horizontal" === f && k(o, d) : "foreground" === u && r <= w && ("vertical" === f ? y(o, p, s, c) : "horizontal" === f && z(o, p, s, c))
|
|
})
|
|
})
|
|
}
|
|
}); |