У мобильной версии слайдера должно быть
два ряда слайдов. Для реализации этого у самого слайдера
должна быть фиксированная высота, но так как контент может меняться (это карточки товаров), то и высоту контейнера нужно менять.
Я написал скрипт который определяет карточку с самой большой высотой и на основании этого рассчитывает высоту контейнера. Но есть баг: при смене размеров устройства не меняются размеры слайдера.
По какой то причине переменная height рассчитывается только один раз (в первый).
const swiper = new Swiper('.slider__slider-wrapper', {
// КОД СЛАЙДЕРА ...
});
// Эта функция должна рассчитывать и менять высоту слайдера
function calcSliderHeight() {
// Операция проводится только для смартфонов
if (window.innerWidth < 768) {
// Определяем высоту самой большой карточки
let slidesHeight = [];
for (let i = 0; i < slides.length; i++) {
slidesHeight.push(slides[i].offsetHeight);
}
let height = (Math.max.apply(null, slidesHeight) * 2) + 30;
// ВОТ ЗДЕСЬ КАЖДЫЙ РАЗ БУДЕТ ВЫВОДИТСЯ ОДНО И ТОЖЕ ЧИСЛО
// ТО ЧИСЛО КОТОРОЕ РАССЧИТЫВАЕТСЯ В ПЕРВЫЙ РАЗ
alert(height);
// Устанавливаем высоту для .swiper-wrapper у всех блоков .slider (верстаю по БЭМ)
let sliders = document.querySelectorAll(".slider .swiper-wrapper")
for (let i = 0; i < sliders.length; i++) {
sliders[i].style.cssText = `height:${height}px`;
}
}
}
// Выборка всех слайдеров
let slides = document.querySelectorAll(".swiper-slide")
// Первый запуск при загрузке страница
calcSliderHeight();
// Запускает перерасчет высоты при смене размеров экрана
window.addEventListener('resize', calcSliderHeight);
Пробовал убрать if (window.innerWidth < 768),
не помогло.