Как отключить прокрутку страницы, когда открыто меню?

Нужно отключить прокрутку тела или страницы, когда открывается меню. Короче, прокрутка должна быть только внутри меню. Кто знает как это сделать? )
Код тут - https://jsfiddle.net/1k2dym70/1/
  • Вопрос задан
  • 3023 просмотра
Решения вопроса 2
DanArst
@DanArst Куратор тега CSS
Гриффиндор в моде при любой погоде!
Мне больше нравиться вариант с добавлением класса.
Например:

В css добавляем

.no_scroll{
  overflow: hidden;
}


А в js При открытии меню
$('body').addClass('no_scroll')
При закрытии
$('body').removeClass('no_scroll')

Если нужно чтобы документ не прыгал когда у body исчезает скролл можно использовать функцию.

function calcScroll() {
		let div = document.createElement('div');

		div.style.width = '50px';
		div.style.height = '50px';
		div.style.overflowY = 'scroll';
		div.style.visibility = 'hidden';

		document.body.appendChild(div);
		let scrollWidth = div.offsetWidth - div.clientWidth;
		div.remove();

		return scrollWidth;
	}


И при открытии добавить еще
$('body').css('margin-right', calcScroll()+'px')
При закрытии убрать
$('body').css('margin-right', '0px')
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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