Этот вопрос закрыт для ответов, так как повторяет вопрос Как ограничить прокрутку скролла до определенной высоты?
@PressOff

Как реализовать disabled scroll на определённом месте?

Доброго времени суток!

Нашёл такую штуку:

;(function(){
  
    window.addEventListener('scroll', scrollHandler, false);
    window.addEventListener('touchmove', scrollHandler, false);
    window.addEventListener('mousewheel', scrollHandler, false);
  
    function scrollHandler(e) {
       var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
       console.log(scrollTop); 
       if(scrollTop > 500) { // после 500px scroll не реагирует
          e.preventDefault();
          e.stopPropagation();
          return false; 
      }   
    }  
})();


взял от сюда: https://www.cyberforum.ru/javascript/thread1221460.html

как её подкрутить к модальному окну?

Модальное окно:
var modal = document.getElementById("mymodal");
var btn = document.getElementById("btn_modal_window");
var close = document.getElementsByClassName("close_modal_window")[0];
var body = document.getElementById('body');
var blocks = document.getElementById("block_three_to_footer_block");

//console.log(blocks);




//        console.log(body);

btn.onclick = function () {
    modal.style.display = "block";
//    body.style.overflow = "hidden";
    blocks.style.display = "none";
}

close.onclick = function () {
    modal.style.display = "none";
//    body.style.overflow = "auto";
    blocks.style.display = "block";
    body.onscroll = function(){

        window.addEventListener('scroll', scrollHandler, false);
        window.addEventListener('touchmove', scrollHandler, false);
        window.addEventListener('mousewheel', scrollHandler, false);

        function scrollHandler(e) {
            var scrollTop = window.pageYOffset || document.documentElement.scrollTop;
            console.log(scrollTop); 
            if(scrollTop > 400) { // после 500px scroll не реагирует
                e.preventDefault();
                e.stopPropagation();
                return false; 
            }   
        }  
    };

}

window.onclick = function(event) {
    if(event.target == modal) {
        modal.style.display = "none";
//        body.style.overflow = "auto";
        blocks.style.display = "block";
    }
}


В таком виде не работает...
  • Вопрос задан
  • 184 просмотра
Решения вопроса 1
ArsenyMatytsyn
@ArsenyMatytsyn Куратор тега JavaScript
Руководитель frontend направления, предприниматель
Вот это body.style.overflow = "hidden" как раз и определяет отсутствие скролла.
Есть не заносить фиксированные размеры, то так можно вырубить скролл именно на этом самом месте. Осталось словить момент, когда это надо сделать.

Часто такое делают, и я в том числе, для того, чтобы не происходила прокрутка, когда юзер шарится в какой-нить модалке или типа того.
Ответ написан
Ваш ответ на вопрос

Вопрос закрыт для ответов и комментариев

Потому что уже есть похожий вопрос.
Похожие вопросы