smargelov
@smargelov
Верстальщик

Как заставить slick-slider срабатывать при ресайзе страницы?

Добрый день.
Есть страница с тремя слайдерами на ней. Все слайдеры сделаны на slick. Один из них работает на всех разрешениях ( с ним всё в порядке), а два других должны включаться только на мобильных (480px и ниже). Они работают. Только есть проблема. Если ресайзнуть страницу вверх, то эти два слайдера отключаются и и слайды выстраиваются в нужные мне блоки, но если уменьшить окно, то срабатывают только css изменения, но слайдер не включается. Для срабатывания приходится перезагружать страницу.
Страница с проблемой
Приму даже костыльный вариант решения, хотя в идеале — хотелось бы разобраться подробно.
  • Вопрос задан
  • 2177 просмотров
Решения вопроса 1
ProjectSoft
@ProjectSoft
Front-end && Back-end разработчик
// Подпишемся на ресайз и продиспатчим его для запуска
$(window).on('resize', function(e){
	// Переменная, по которой узнаем запущен слайдер или нет.
	// Храним её в data
	var init = $(".card-box").data('init-slider');
	// Если мобильный
	if(window.innerWidth < 480){
		// Если слайдер не запущен
		if(init != 1){
			// Запускаем слайдер и записываем в data init-slider = 1
			$('#card-box').slick({
				infinite: true,
				slidesToShow: 1,
				slidesToScroll: 1
			}).data({'init-slider': 1});
		}
	}
	// Если десктоп
	else {
		// Если слайдер запущен
		if(init == 1){
			// Разрушаем слайдер и записываем в data init-slider = 0
			$('#card-box').slick('unslick').data({'init-slider': 0});
		}
	}
}).trigger('resize');

https://monosnap.com/file/Jw6PomDPOuv54bY25640JxAz...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@akavato
frontend dev
Нужно реинициализировать слик, если до этого использовался unslick. Как-то так наверное.
addDomListener(window, 'resize', function () {
    if (условие) {
    $('.your-class').slick({
    setting-name: setting-value
  });
}
}
Ответ написан
Ваш ответ на вопрос

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

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