@cupacabka

Как повторно инициализировать слайдер после его уничтожения?

Есть слайдер, нужно, чтобы он отрабатывал с одними параметрами до 857 и дальше вместо листания появлялся эффект фейд. Через брейкпоинты такое не сделать. Надо дестрой делать слайдера и заново его инициализировать. С первой частью справился. Он на заданном разрешении деактивируется. Но не могу сделать, чтобы на определенном разрешении он снова активировался. Пишет в девтулс ошибку Uncaught TypeError: Cannot read property 'destroy' of undefined.

Код
let sliderAbout = document.querySelector(".project__slider");

let mySwiper;

function sl() {
  if (window.innerWidth > 857) {
    mySwiper = new Swiper(sliderAbout, {
      observer: true,
      observeParents: true,
      slidesPerView: 1,
      spaceBetween: 50,
      speed: 800,
      direction: "vertical",
      centeredSlides: true,
      pagination: {
        el: ".swiper-pagination",
        type: "bullets",
        clickable: true,
      },
    });
  }
  if (window.innerWidth < 857) {
    mySwiper.destroy();
  }
}

sl();
window.addEventListener("resize", () => {
  sl();
});




let sliderAbout2 = document.querySelector(".project__slider_mob");

let mySwiper2;

function sl2() {
  if (window.innerWidth < 857) {
    mySwiper2 = new Swiper(sliderAbout2, {
      observer: true,
      observeParents: true,	  
	  effect: 'fade',
	  fadeEffect: {
		crossFade: true
	  },
	  autoplay: {
		delay: 1000,
		disableOnInteraction: false,
	},
      spaceBetween: 50,
      speed: 800,      
      centeredSlides: true,
    //   pagination: {
    //     el: ".swiper-pagination",
    //     type: "bullets",
    //     clickable: true,
    //   },
    });
  }
  if (window.innerWidth > 857) {
    mySwiper2.destroy();
  }
}

sl2();
window.addEventListener("resize", () => {
  sl2();
});
  • Вопрос задан
  • 1073 просмотра
Решения вопроса 1
MrDecoy
@MrDecoy
Верставший фронтендер
А Вы документацию читали?

Destroy slider instance and detach all events listeners, where
deleteInstance - boolean - Set it to false (by default it is true) to not to delete Swiper instance
cleanStyles - boolean - Set it to true (by default it is true) and all custom styles will be removed from slides, wrapper and container. Useful if you need to destroy Swiper and to init again with new options or in different direction

Передайте false в метод destroy.

И как предложение: а что если не делать destroy, а в зависимости от размеров окна браузера делать init с разными настройками?
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы