Отключение полосы прокрутки с активным наложением меню

У меня возникли проблемы с отключением полосы прокрутки на моем веб-сайте, когда активен оверлей меню (класс: .overlay). Я создал наложение меню и хотел бы, чтобы полоса прокрутки была отключена, когда наложение видно. Подобно этому Просто отключить прокрутку, а не скрывать ее?

Поэтому я хотел бы отключить полосу прокрутки, а не скрыть ее. Что я понимаю до сих пор: в основном мне нужно добавить встроенный CSS в html, когда отображается оверлей: заблокировать и удалить встроенный CSS, когда отображается оверлей: нет;

Я попробовал несколько решений, представленных в Stackoverflow, но пока безрезультатно. Это было мое последнее решение, которое в итоге не сработало:

if( $(".overlay").css('display') == 'block') { 

$('html').css('position','fixed');
$('html').css('overflow-y','scroll');
$('html').css('width','100%');

} else {
$('html').css('position','');
$('html').css('overflow-y','');
$('html').css('width','');
}

Вышеуказанное основано на этом: div display if block jquery

Вот мой сайт (в разработке):

http://www.wouterpasman.com/view/

Наложение меню активируется при нажатии кнопки меню в правом верхнем углу. Цель: Когда оверлей активен, полоса прокрутки должна быть временно отключена, но все еще видна.

Спасибо за твою помощь!


person WPasman    schedule 04.06.2017    source источник


Ответы (1)


Вы можете просто добавить переполнение hidden и auto :

if( $(".overlay").css('display') == 'block') { 
   $('html').css('position','fixed');
   $('html').css('overflow-y','hidden');
   $('html').css('width','100%');
} else {
   $('html').css('position','');
   $('html').css('overflow-y','');
   $('html').css('width','');
}
person Kashkain    schedule 04.06.2017
comment
спасибо, но этот код не работает должным образом (аналогично моему коду) или, по крайней мере, в HTML ничего не добавляется после отображения меню наложения: блокировка. Кажется, эта часть if($(.overlay).css('display') == 'block') { не имеет эффекта... - person WPasman; 04.06.2017
comment
Также не overflow:hidden скрывает полосу прокрутки, а не просто отключает ее? Я хотел бы отключить полосу прокрутки, а не скрывать ее. - person WPasman; 04.06.2017
comment
для вашего теста попробуйте: $('.overlay').is(':visible') вместо $('.overlay').css('display') == 'block', а для прокрутки вы просто необходимо временно отключить событие: stackoverflow.com/questions/ 4770025/ - person Kashkain; 04.06.2017