You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
86 lines
2.7 KiB
86 lines
2.7 KiB
document.addEventListener('DOMContentLoaded', function() {
|
|
// Main slider
|
|
const mainSwiper = new Swiper('.main-slider', {
|
|
effect: 'fade',
|
|
fadeEffect: { crossFade: true },
|
|
autoplay: { delay: 5000, disableOnInteraction: false },
|
|
loop: true
|
|
});
|
|
|
|
// Ingredients slider
|
|
const swiper = new Swiper('.ingredients-swiper', {
|
|
slidesPerView: 5,
|
|
centeredSlides: true,
|
|
centeredSlidesBounds: true,
|
|
loop: true,
|
|
autoplay: {
|
|
delay: 4000,
|
|
disableOnInteraction: false,
|
|
},
|
|
navigation: {
|
|
nextEl: '.swiper-button-next',
|
|
prevEl: '.swiper-button-prev',
|
|
},
|
|
watchSlidesProgress: true,
|
|
slideToClickedSlide: true,
|
|
effect: 'slide',
|
|
speed: 800,
|
|
on: {
|
|
init() {
|
|
updateSlideStates(this);
|
|
},
|
|
slideChange() {
|
|
updateSlideStates(this);
|
|
},
|
|
}
|
|
});
|
|
|
|
function updateSlideStates(swiper) {
|
|
const slides = swiper.slides;
|
|
|
|
slides.forEach((slide) => {
|
|
slide.style.opacity = '0.3';
|
|
slide.style.transform = 'scale(0.7)';
|
|
slide.style.zIndex = '1';
|
|
});
|
|
|
|
// Найдём активный слайд по классу
|
|
const activeSlide = [...slides].find((s) => s.classList.contains('swiper-slide-active'));
|
|
if (!activeSlide) return;
|
|
|
|
// Обнулим все
|
|
const updateSlide = (slide, scale, opacity, zIndex) => {
|
|
if (slide) {
|
|
slide.style.transform = `scale(${scale})`;
|
|
slide.style.opacity = opacity;
|
|
slide.style.zIndex = zIndex;
|
|
}
|
|
};
|
|
|
|
updateSlide(activeSlide, 1, 1, 10);
|
|
|
|
// Пройдем от активного — назад и вперёд
|
|
const getPrev = (el, n) => {
|
|
let node = el;
|
|
for (let i = 0; i < n; i++) {
|
|
node = node.previousElementSibling || swiper.slides[swiper.slides.length - 1];
|
|
}
|
|
return node;
|
|
};
|
|
|
|
const getNext = (el, n) => {
|
|
let node = el;
|
|
for (let i = 0; i < n; i++) {
|
|
node = node.nextElementSibling || swiper.slides[0];
|
|
}
|
|
return node;
|
|
};
|
|
|
|
updateSlide(getPrev(activeSlide, 1), 0.85, 0.6, 6);
|
|
updateSlide(getPrev(activeSlide, 2), 0.75, 0.4, 4);
|
|
|
|
updateSlide(getNext(activeSlide, 1), 0.85, 0.6, 6);
|
|
updateSlide(getNext(activeSlide, 2), 0.75, 0.4, 4);
|
|
}
|
|
|
|
});
|
|
|