145 lines
5.1 KiB
JavaScript
Executable File
145 lines
5.1 KiB
JavaScript
Executable File
'use strict';
|
|
/**
|
|
* jQuery plugin paroller.js v1.4.6
|
|
* https://github.com/tgomilar/paroller.js
|
|
* preview: https://tgomilar.github.io/paroller/
|
|
**/
|
|
(function(a) {
|
|
'use strict';
|
|
'function' == typeof define && define.amd ? define('parollerjs', ['jquery'], a) : 'object' == typeof module && 'object' == typeof module.exports ? module.exports = a(require('jquery')) : a(jQuery)
|
|
})(function(a) {
|
|
'use strict';
|
|
var b = Math.round;
|
|
let c = !1,
|
|
d = function() {
|
|
c = !1
|
|
},
|
|
e = {
|
|
bgVertical: function(a, b) {
|
|
return a.css({
|
|
"background-position": 'center ' + -b + 'px'
|
|
})
|
|
},
|
|
bgHorizontal: function(a, b) {
|
|
return a.css({
|
|
"background-position": -b + 'px center'
|
|
})
|
|
},
|
|
vertical: function(a, b, c, d) {
|
|
return 'none' === d && (d = ''), a.css({
|
|
"-webkit-transform": 'translateY(' + b + 'px)' + d,
|
|
"-moz-transform": 'translateY(' + b + 'px)' + d,
|
|
transform: 'translate(0,' + b + 'px)' + d,
|
|
transition: c,
|
|
"will-change": 'transform'
|
|
})
|
|
},
|
|
horizontal: function(a, b, c, d) {
|
|
return 'none' === d && (d = ''), a.css({
|
|
"-webkit-transform": 'translateX(' + b + 'px)' + d,
|
|
"-moz-transform": 'translateX(' + b + 'px)' + d,
|
|
transform: 'translate(' + b + 'px, 0)' + d,
|
|
transition: c,
|
|
"will-change": 'transform'
|
|
})
|
|
}
|
|
},
|
|
f = {
|
|
factor: function(a, b, c) {
|
|
let d = a.data('paroller-factor'),
|
|
e = d ? d : c.factor;
|
|
if (576 > b) {
|
|
let b = a.data('paroller-factor-xs'),
|
|
d = b ? b : c.factorXs;
|
|
return d ? d : e
|
|
}
|
|
if (768 >= b) {
|
|
let b = a.data('paroller-factor-sm'),
|
|
d = b ? b : c.factorSm;
|
|
return d ? d : e
|
|
}
|
|
if (1024 >= b) {
|
|
let b = a.data('paroller-factor-md'),
|
|
d = b ? b : c.factorMd;
|
|
return d ? d : e
|
|
}
|
|
if (1200 >= b) {
|
|
let b = a.data('paroller-factor-lg'),
|
|
d = b ? b : c.factorLg;
|
|
return d ? d : e
|
|
}
|
|
if (1920 >= b) {
|
|
let b = a.data('paroller-factor-xl'),
|
|
d = b ? b : c.factorXl;
|
|
return d ? d : e
|
|
}
|
|
return e
|
|
},
|
|
bgOffset: function(a, c) {
|
|
return b(a * c)
|
|
},
|
|
transform: function(a, c, d, e) {
|
|
return b((a - d / 2 + e) * c)
|
|
}
|
|
},
|
|
g = {
|
|
background: function(a) {
|
|
return a.css({
|
|
"background-position": 'unset'
|
|
})
|
|
},
|
|
foreground: function(a) {
|
|
return a.css({
|
|
transform: 'unset',
|
|
transition: 'unset'
|
|
})
|
|
}
|
|
};
|
|
a.fn.paroller = function(h) {
|
|
const i = a(window).height(),
|
|
j = a(document).height(); // default options
|
|
return h = a.extend({
|
|
factor: 0, // - to +
|
|
factorXs: 0, // - to +
|
|
factorSm: 0, // - to +
|
|
factorMd: 0, // - to +
|
|
factorLg: 0, // - to +
|
|
factorXl: 0, // - to +
|
|
transition: 'transform .1s ease', // CSS transition
|
|
type: 'background', // foreground
|
|
direction: 'vertical' // horizontal
|
|
}, h), this.each(function() {
|
|
const k = a(this);
|
|
let l = k.outerHeight(),
|
|
m = a(window).width(),
|
|
n = k.offset().top,
|
|
o = 0,
|
|
p = function(a, b) { // console.log(`offset ${scrollOffset} => ${transform - scrollOffset}`)
|
|
return a || (o = b), b - o
|
|
};
|
|
const q = k.data('paroller-type'),
|
|
r = k.data('paroller-direction'),
|
|
s = k.data('paroller-transition'),
|
|
t = k.css('transform'),
|
|
u = s ? s : h.transition,
|
|
v = q ? q : h.type,
|
|
w = r ? r : h.direction;
|
|
let x = 0,
|
|
y = f.bgOffset(n, x),
|
|
z = f.transform(n, x, i, l);
|
|
'background' === v ? 'vertical' === w ? e.bgVertical(k, y) : 'horizontal' === w && e.bgHorizontal(k, y) : 'foreground' === v && ('vertical' === w ? e.vertical(k, z, u, t) : 'horizontal' === w && e.horizontal(k, z, u, t)), a(window).on('resize', function() {
|
|
let o = a(this).scrollTop();
|
|
m = a(window).width(), n = k.offset().top, l = k.outerHeight(), x = f.factor(k, m, h), y = b(n * x);
|
|
let q = p(a(document).scrollTop(), b((n - i / 2 + l) * x));
|
|
c || (window.requestAnimationFrame(d), c = !0), 'background' === v ? (g.background(k), 'vertical' === w ? e.bgVertical(k, y) : 'horizontal' === w && e.bgHorizontal(k, y)) : 'foreground' === v && o <= j && (g.foreground(k), 'vertical' === w ? e.vertical(k, q, u) : 'horizontal' === w && e.horizontal(k, q, u))
|
|
}), a(window).on('load scroll', function() {
|
|
let g = a(this).scrollTop(),
|
|
o = a(document).scrollTop();
|
|
x = f.factor(k, m, h);
|
|
let q = p(o, b((n - i / 2 + l - g) * x));
|
|
c || (window.requestAnimationFrame(d), c = !0), 'background' === v ? 'vertical' === w ? e.bgVertical(k, y) : 'horizontal' === w && e.bgHorizontal(k, y) : 'foreground' === v && g <= j && ('vertical' === w ? e.vertical(k, q, u, t) : 'horizontal' === w && e.horizontal(k, q, u, t))
|
|
})
|
|
})
|
|
}
|
|
});
|