Задать вопрос
Nikito4ka_ka
@Nikito4ka_ka

Как исправить конфликт скриптов JS(dragable)?

Здравствуйте, в проекте использую swiper и slick slider, понимаю возможно не имеет смысла использовать две библиотеки одновременно. но вот тещу и ту и другую. Проблема видимо в том, что эти две библиотеки конфликтуют!

Swiper - отвечает за пролистывание сайта по экранно
Slick slyder - просто на какой-то странице есть слайдер с блоками

Я могу зажать левую кнопку мыши и потянуть вниз и сработает пролистывание swiper, а вот вправо и влево slick slyder не работает.

На сколько я знаю за такое пролистывание отвечает в JS draggable: true,

Подскажите как решить данную проблему ?(js только начал изучать)

script.js
// Swiper
  // init Swiper:
  let pageSlider = new Swiper('.wrapper', {
    
    // Свои классы
    wrapperClass: "page-wrapper",
    slideClass: "page-screen",

    // Вертикальный слайдер
    direction: 'vertical',

    // Количество слайдов для показа
    slidesPerView: 'auto',

    // Включаем параллакс
    parallax: true,

    // Управленрие клавиатурой
    keyboard: {
      // Включить\выключить
      enabled: true,
      // Включить\выключить
      // только когда слайдер
      // в пределах вьюпорта
      onlyInViewport: true,
      // Включить\выключить
      // управление клавишами
      // pageUp, pageDown
      pageUpDown: true,
    },

    // Управление колесом мыши
    mousewheel: {
      // Чувствительность колеса мыши
      sensitivity: 1,
      // Класс обьекта на котором
      // будет срабатывать прокрутка мыши
      // eventsTarget: ".image-slider"
    },

    // Отключить функционала
    // если слайдов меньше чем нужно
    whatchOverflow: true,

    // Скорость
    speed: 800,

    // Обновить свайпер
    // при изменении элементов слайдера
    observer: true,

    // Обновить свайпер
    // при изменении родительских 
    // элементов слайдера
    observeParants: true,

    // Обновить свайпер
    // при изменении дочерних 
    // элементов слайдера
    observeSlideChaildren: true,

    // Навигация
    // Буллетыб текущее положениеб прогрессбыр
    pagination: {
      el: '.page-pagination',
      type: 'bullets',
      clickable: true,
      bulletClass: "page-bullet",
      bulletActiveClass: "page-bullet-active",
    },

    // Скролл
    scrollbar: {
      el: '.page-scroll',
      dragClass: "page-drag-scroll",
      // Возможность перетаскивать скролл
      draggable: false,
    }
  });


// Header color change
  $(document).ready(function(){
    // Change this to the correct selector.
    $('nav.navbar').midnight();
  });



// Popup Open or Close
const popupLinks = document.querySelectorAll('.popup-link');
const body = document.querySelectorAll('body');
const lockPadding = document.querySelectorAll('.lock-padding');

let unlock = true;

const timeout = 800;

if (popupLinks.length > 0) {
  for (let index = 0; index < popupLinks.length; index++) {
    const popupLink = popupLinks[index];
    popupLink.addEventListener('click', function (e) {
      const popupName = popupLink.getAttribute('href').replace('#', '');
      const curentPopup = document.getElementById(popupName);
      popupOpen(curentPopup);
      e.preventDefault();
    });
  }
}

const popupCloseIcon = document.querySelectorAll('.close-popup');
if (popupCloseIcon.length > 0) {
  for (let index = 0; index < popupCloseIcon.length; index++) {
    const el = popupCloseIcon[index];
    el.addEventListener('click', function (e) {
      popupClose(el.closest('.popup'));
      e.preventDefault();
    })
  }
}

function popupOpen(curentPopup) {
  if ( curentPopup && unlock) {
    const popupActive = document.querySelector('.popup.open');
    if (popupActive) {
      popupClose(popupActive, false);
    }
    curentPopup.classList.add('open');
    curentPopup.addEventListener('click', function  (e) {
      if (!e.target.closest('.popup-content')) {
        popupClose(e.target.closest('.popup'));
      }
    });
  }
}

function popupClose(popupActive, doUnlock = true) {
  if (unlock) {
    popupActive.classList.remove('open');
    if (doUnlock) {
      bodyUnlock();
    }
  }
}

function bodyLock() {
  const lockPaddingValue = window.innerWidth - document.querySelector('.swiper-container').offsetwidth + 'px';

  if (lockPadding.length > 0) {
    for (let index = 0; index < lockPadding.length; index++ ) {
      const el = lockPadding[index];
      el.getElementsByClassName.paddingRight = lockPaddingValue;
    }
  }
  body.stylr.paddingRight = lockPaddingValue;
  body.classList.add('lock');

  unlock = false;
  setTimeout(function () {
    unlock = true;
  }, timeout);
}

function bodyUnlock() {
  setTimeout(function () {
    for (let index = 0; index < lockPadding.length; index++ ) {
      const el = lockPadding[index];
      el.getElementsByClassName.paddingRight = '0px';
    }
    body.style.paddingRight = '0px';
    body.classList.remove('lock');
  }, timeout);

  unlock = false;
  setTimeout(function () {
    unlock = true;
  }, timeout);
}

document.addEventListener('keydown', function (e) {
  if (e.which === 27) {
    const popupActive = document.querySelector('.popup.open');
    popupClose(popupActive);
  }
});

(function () {
  //Проверяем поддержку
  if (!Element.prototype.closest) {
    //реализуем
    Element.prototype.closest = function (css) {
      var node = this;
      while (node) {
        if (node.matches(css)) return node;
        else node = node.parentElement;
      }
      return null
    };
  }
})();
(function () {
  //Проверяем поддержку
  if (!Element.prototype.matches) {
    // определяем свойство
    Element.prototype.matches = Element.prototype.matchesSelector ||
      Element.prototype.webkitMatchesSelector ||
      Element.prototype.mozMatchesSelector ||
      Element.prototype.msMatchesSelector;
  }
})();




//slider slick
$(document).ready(function () {
  $('.slider').slick({
    arrows:true,
    dots:false,
    slidesToShow:2,
    easing:'ease',
    infinite:true,
    centerMode: true,
  });
});


CodePen
  • Вопрос задан
  • 110 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы
Rocket Смоленск
от 80 000 до 130 000 ₽
div. Ставрополь
от 40 000 до 90 000 ₽
Wanted. Санкт-Петербург
До 220 000 ₽
18 дек. 2024, в 13:47
2000 руб./в час
18 дек. 2024, в 13:22
30000 руб./за проект
18 дек. 2024, в 12:37
10000 руб./за проект