in src/assets/js/parallax.js [50:144]
$.fn.parallaxBg = function (settings) {
var config = {};
if (settings) $.extend(config, settings);
var $self = this;
var id = $self.attr('id');
var vertical_adjust = 0;
var scale_height = 0;
var bgHeight;
var bgWidth;
var is_small = false;
var is_slideshow = $self.closest(config.container).length > 0;
function resizecheck() {
var containerHeight = $self.outerHeight();
var containerWidth = $self.outerWidth();
var travel =
Math.round(
Math.abs(config.$window.height() - containerHeight) *
Math.abs(config.offsetIntertia)
) * 2;
// console.log('travel: ' + travel);
var safeHeight = containerHeight + travel;
var ratio = bgHeight / bgWidth;
scale_height =
safeHeight / containerWidth > ratio
? safeHeight
: containerWidth * ratio;
vertical_adjust = (scale_height - containerHeight) / 2;
scrollcheck();
}
function scrollcheck() {
if (
isInView($self, config.$window) &&
!config.is_touch_device &&
!is_small &&
!(is_slideshow && !$self.hasClass('selected'))
) {
if (!$self.hasClass('active')) {
$self.addClass('active');
}
scrollBackground();
$self.triggerHandler(
'windowScroll',
distanceFromView($self, config.$window)
);
} else {
if ($self.hasClass('active')) {
$self.removeClass('active');
}
}
}
function scrollBackground() {
var bgPos =
Math.round(
-distanceFromView($self, config.$window) * config.offsetIntertia
) -
(vertical_adjust + config.offsetPosition);
$self.css({
'background-position': '50% ' + bgPos + 'px',
'background-size': 'auto ' + scale_height + 'px',
});
}
$self.getBackgroundSize(function (obj) {
bgHeight = obj.height;
bgWidth = obj.width;
obj.self = null;
config.$window.on('resize', resizecheck);
config.$window.on('scroll', scrollcheck);
resizecheck();
});
if (is_slideshow) {
$self.on('resizecheck', function () {
resizecheck();
});
}
function checkMobile(obj, media) {
$self.css('background-position', '');
is_small = media.small;
}
$.subscribe('breakpoints', checkMobile);
return this;
};