$.fn.parallaxBg = function()

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;
  };