@artur012097

Как реализовать адаптив Slick Slider?

Есть страница, у укоторого при достижении какого то разрешерия нужно включить слайдер и обратно. Есть несколько проблем.
1. Задачу решил путем отслеживания разрешения экрана. Но, когда уже добавляется слайдер и код продолжает работать, прт каждом resize - е код пытается добавить сллайдер. И иэ-эа тогоб что слайдер уже инициализирован, викидывает ошибку. Как обойти этот момент или решать по другомую,
2. При работе кода для добавления слайдераб у одного из блоков изначально display: none; , и из-за этого тоже кидает ошибку в консоль и не добавляет слайдер. Как обойти этот момент?
  • Вопрос задан
  • 120 просмотров
Решения вопроса 1
AntonLitvinenko
@AntonLitvinenko
HTML coder
$(window).on('resize', function(e){
  // Переменная, по которой узнаем запущен слайдер или нет.
  var initLib = $('.library-slider').data('init-slider');

  if(window.innerWidth < 768){
    // Если слайдер не запущен
    if(initLib != 1){
      // Запускаем слайдер и записываем в data init-slider = 1
      $('.library-slider').slick({
        arrows: false,
        dots: true,
        slidesToShow: 3,
        slidesToScroll: 1,
        responsive: [
          {
            breakpoint: 576,
            settings: {
              slidesToShow: 2,
              slidesToScroll: 1,
            }
          },
          {
            breakpoint: 480,
            settings: {
              slidesToShow: 1,
              slidesToScroll: 1,
            }
          }
        ]
      }).data({'init-slider': 1});
    }
  }
  // Если десктоп
  else {
    // Если слайдер запущен
    if(initLib == 1){
      // Разрушаем слайдер и записываем в data init-slider = 0
      $('.library-slider').slick('unslick').data({'init-slider': 0});
    }
  }
}).trigger('resize')
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
ThunderCat
@ThunderCat Куратор тега CSS
{PHP, MySql, HTML, JS, CSS} developer
прт каждом resize - е код пытается добавить сллайдер.
Для этого заводите глобальный флаг типа let sliderInited = false;, и при инициализации проверяете, ставите в тру и дальше уже не инициализируете.

у одного из блоков изначально display: none;
Если это из-за того что вы прятали слайдер, то поможет реинициализация: $('.slick').slick("refresh");
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы