131 lines
4.5 KiB
JavaScript
131 lines
4.5 KiB
JavaScript
"use strict";
|
|
|
|
exports.__esModule = true;
|
|
exports.default = void 0;
|
|
|
|
var _dom = _interopRequireDefault(require("../../utils/dom"));
|
|
|
|
var _utils = require("../../utils/utils");
|
|
|
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
|
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
|
|
var Parallax = {
|
|
setTransform: function setTransform(el, progress) {
|
|
var swiper = this;
|
|
var rtl = swiper.rtl;
|
|
var $el = (0, _dom.default)(el);
|
|
var rtlFactor = rtl ? -1 : 1;
|
|
var p = $el.attr('data-swiper-parallax') || '0';
|
|
var x = $el.attr('data-swiper-parallax-x');
|
|
var y = $el.attr('data-swiper-parallax-y');
|
|
var scale = $el.attr('data-swiper-parallax-scale');
|
|
var opacity = $el.attr('data-swiper-parallax-opacity');
|
|
|
|
if (x || y) {
|
|
x = x || '0';
|
|
y = y || '0';
|
|
} else if (swiper.isHorizontal()) {
|
|
x = p;
|
|
y = '0';
|
|
} else {
|
|
y = p;
|
|
x = '0';
|
|
}
|
|
|
|
if (x.indexOf('%') >= 0) {
|
|
x = parseInt(x, 10) * progress * rtlFactor + "%";
|
|
} else {
|
|
x = x * progress * rtlFactor + "px";
|
|
}
|
|
|
|
if (y.indexOf('%') >= 0) {
|
|
y = parseInt(y, 10) * progress + "%";
|
|
} else {
|
|
y = y * progress + "px";
|
|
}
|
|
|
|
if (typeof opacity !== 'undefined' && opacity !== null) {
|
|
var currentOpacity = opacity - (opacity - 1) * (1 - Math.abs(progress));
|
|
$el[0].style.opacity = currentOpacity;
|
|
}
|
|
|
|
if (typeof scale === 'undefined' || scale === null) {
|
|
$el.transform("translate3d(" + x + ", " + y + ", 0px)");
|
|
} else {
|
|
var currentScale = scale - (scale - 1) * (1 - Math.abs(progress));
|
|
$el.transform("translate3d(" + x + ", " + y + ", 0px) scale(" + currentScale + ")");
|
|
}
|
|
},
|
|
setTranslate: function setTranslate() {
|
|
var swiper = this;
|
|
var $el = swiper.$el,
|
|
slides = swiper.slides,
|
|
progress = swiper.progress,
|
|
snapGrid = swiper.snapGrid;
|
|
$el.children('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
|
|
swiper.parallax.setTransform(el, progress);
|
|
});
|
|
slides.each(function (slideEl, slideIndex) {
|
|
var slideProgress = slideEl.progress;
|
|
|
|
if (swiper.params.slidesPerGroup > 1 && swiper.params.slidesPerView !== 'auto') {
|
|
slideProgress += Math.ceil(slideIndex / 2) - progress * (snapGrid.length - 1);
|
|
}
|
|
|
|
slideProgress = Math.min(Math.max(slideProgress, -1), 1);
|
|
(0, _dom.default)(slideEl).find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (el) {
|
|
swiper.parallax.setTransform(el, slideProgress);
|
|
});
|
|
});
|
|
},
|
|
setTransition: function setTransition(duration) {
|
|
if (duration === void 0) {
|
|
duration = this.params.speed;
|
|
}
|
|
|
|
var swiper = this;
|
|
var $el = swiper.$el;
|
|
$el.find('[data-swiper-parallax], [data-swiper-parallax-x], [data-swiper-parallax-y], [data-swiper-parallax-opacity], [data-swiper-parallax-scale]').each(function (parallaxEl) {
|
|
var $parallaxEl = (0, _dom.default)(parallaxEl);
|
|
var parallaxDuration = parseInt($parallaxEl.attr('data-swiper-parallax-duration'), 10) || duration;
|
|
if (duration === 0) parallaxDuration = 0;
|
|
$parallaxEl.transition(parallaxDuration);
|
|
});
|
|
}
|
|
};
|
|
var _default = {
|
|
name: 'parallax',
|
|
params: {
|
|
parallax: {
|
|
enabled: false
|
|
}
|
|
},
|
|
create: function create() {
|
|
var swiper = this;
|
|
(0, _utils.bindModuleMethods)(swiper, {
|
|
parallax: _extends({}, Parallax)
|
|
});
|
|
},
|
|
on: {
|
|
beforeInit: function beforeInit(swiper) {
|
|
if (!swiper.params.parallax.enabled) return;
|
|
swiper.params.watchSlidesProgress = true;
|
|
swiper.originalParams.watchSlidesProgress = true;
|
|
},
|
|
init: function init(swiper) {
|
|
if (!swiper.params.parallax.enabled) return;
|
|
swiper.parallax.setTranslate();
|
|
},
|
|
setTranslate: function setTranslate(swiper) {
|
|
if (!swiper.params.parallax.enabled) return;
|
|
swiper.parallax.setTranslate();
|
|
},
|
|
setTransition: function setTransition(swiper, duration) {
|
|
if (!swiper.params.parallax.enabled) return;
|
|
swiper.parallax.setTransition(duration);
|
|
}
|
|
}
|
|
};
|
|
exports.default = _default; |