iborisbelov
@iborisbelov
Веб-дизайнер, UX\UI

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

Добрый день.
Есть насущный вопрос.

Дано:
Раскрытое меню взятое отсюда (уменьшите экран, для понимая вопроса)
f4abb2e03e3a4a4592ff0c6069fb8fb4.jpg

Слева остается контентная зона. Но если высота сайта будет больше чем заданная в примере, то при открытом меню можно будет левую часть, тоже скроллить.

Надо: Чтобы левую (контентную зону) скроллить было нельзя.

Как не получалось:

На просторах интернета находил такой код
position: fixed;
    overflow: hidden;

Но он просто "СТОПарит" нужную зону, и не дает двигаться, ПРИ ЭТОМ возвращая в начало экрана.
То есть если мы даже прокрутим страницу вниз, и нажмем открыть меню, то вернемся вверх.

До нажатия 338d249ffec44e3cbf2aedabb69db199.jpg
После нажатия 6e026e7bef37414bb8120bd43bef4784.jpg

Как видите, возвращает обратно наверх. Как этого избежать?

----

UPD. Нашел такой линк

Там есть код:

var prevent = function(event) {
	window.scrollTo(0, 0);
	event ? event.preventDefault() : window.event.returnValue = false;
};

if(window.addEventListener) {
	var array = ['DOMMouseScroll', 'mousewheel', 'scroll'],
		i = array.length;

	while(i--) {
		window.addEventListener(array[i], prevent, false);
	}
}
else window.onmousewheel = document.onmousewheel = window.onscroll = prevent;


Вроде сработало, но оно сработало на весь класс контента.
У меня есть контент зона .cd-main-content
И она же когда раскрытое меню .cd-main-content.nav-is-visible

И я понимаю что сюда
var array = ['DOMMouseScroll', 'mousewheel', 'scroll'],
вместо scroll надо впихнуть .cd-main-content.nav-is-visible, а как впихнуть двойной класс?

----

UPD. нашел вариант , кто подскажет, почему в последнем моей примере, не двигается контентная зона?
  • Вопрос задан
  • 24893 просмотра
Пригласить эксперта
Ответы на вопрос 1
iborisbelov
@iborisbelov Автор вопроса
Веб-дизайнер, UX\UI
Вопрос закрыт.
В том скрипте, что я скидывал выше https://codyhouse.co/demo/mega-site-navigation/ind...
К body прописывает класс, все делается чисто через css

body.overflow-hidden {
    overflow: hidden;
}
Ответ написан
Ваш ответ на вопрос

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

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