@SilencerWeb

Как убрать скролл браузера при открытии меню, а после закрытия обратно его включить?

Как убрать скролл браузера при открытии меню, а после его закрытия обратно его включить? Нашел вот такое решение, но не знаю как выключить это после того, как закроется меню:
document.onmousewheel = document.onwheel = function () {
        return false;
      };
      document.addEventListener("MozMousePixelScroll", function () {
        return false
      }, false);
      document.onkeydown = function (e) {
        if (e.keyCode >= 33 && e.keyCode <= 40) return false;
      };
      return false;


Вот пример на кодпене

P.S. overflow: hidden; не подходит, т.к. после отмены этого свойства будет скроллиться в самый верх страницы.
  • Вопрос задан
  • 407 просмотров
Пригласить эксперта
Ответы на вопрос 1
bubandos
@bubandos
bash'у, javascript'ую, php'лю, css'аю, html'каю
На кодпене не работает ваш пример.
Попробуйте как-то так
menuShowElement.addEventListener('click', disableScroll);
menuShowElement.addEventListener('someEvent', enableScroll); // тут уж не знаю, по клику или по чему еще вы будете прятать меню

и в disableScroll вешаете обработчики событий mousewheel, wheel, keydown со stopPropagation
соответственно в enableScroll - грохаете их.

Хотя, правильнее было бы по открытию меню сохранять scrollTop и делать overflow:hidden;, а после закрытия - возвращать scrollTop в исходное значение.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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