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

Как вернуть состояние скролла к блоку?

Есть блок (продукты). Когда я до него доскраливаю, я отключаю скролл у библиотеки locomotive.js и фиксирую сам блок. Затем у меня включается рендер (при помощи owl-carousel). Когда я долистываю до последнего слайда в блоке, мне нужно обратно включать скролл и убирать фиксацию блока. Не могу это сделать. Вот код

// тут инициализирую библиотеку локомотив
const scrollMainScreen = new LocomotiveScroll({
    el: document.querySelector('[data-scroll-container]'),
    smooth: true,
    multiplier: 1,
    getDirection: false,
  });

  scrollMainScreen.on('scroll', function(obj) {

    const productRender = document.querySelector('.products'); // получаю блок с продуктом
    const productRenderRect = productRender.getBoundingClientRect(); // получаю координаты

    if (productRenderRect.top <= 0) {
      productRender.classList.add('fixed'); // фиксирую блок
      scrollMainScreen.stop(); // отключаю скролл страницы

      $('.owl-carousel').on('changed.owl.carousel', function(event) {

        var lastSlide = event.item.index + 1; // последний слайд (использую RTL - поэтому последний слайд - 0. Прибавляю + 1, для наглядности)
        if(lastSlide === 1) { // если последний слайд = 1, то отключаю скролл и убираю фиксацию. Но при этом предыдущее условие ( if (productRenderRect.top <= 0)) продолжает отрабатывать и scrollMainScreen все равно получает метод stop();
          productRender.classList.remove('fixed');
          scrollMainScreen.start();
        }
      });
    } else {
      productRender.classList.remove('fixed');
    }
  });


Подскажите что можно сделать?

Переменной productRenderRect присвоить пустую строку нельзя, ибо это геттер((
  • Вопрос задан
  • 72 просмотра
Подписаться 1 Средний 2 комментария
Пригласить эксперта
Ваш ответ на вопрос

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

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