JS / CSS: отключить полосу прокрутки, но сохранить положение прокрутки

Я использую диалоговое окно Jquery, чтобы открыть всплывающее окно в верхней части страницы. Когда я открываю диалоговое окно, я хочу, чтобы общая прокрутка страницы была отключена. Для этого я делаю:

$('body').css({overflow:'hidden'});

когда откроется диалоговое окно, и:

$('body').css({overflow:'auto'});

когда диалог закрывается.

Это работает, но когда полоса прокрутки удаляется, содержимое на задней панели перемещается вправо, и результат не очень хороший.

Я попробовал другой метод, создав класс css «noscroll», как таковой:

body.noscroll
{
    position: fixed; 
    overflow-y: scroll;
    width: 100%;
}

затем вместо предыдущего js-кода я добавляю и удаляю этот класс в тело при открытии / закрытии диалога.

Теперь это работает для полосы прокрутки, и содержимое в задней части не перемещается вправо, но при этом методе содержимое в задней части возвращается наверх.

Таким образом, method1 заставляет контент двигаться вправо, а method2 заставляет контент двигаться вверх.

Кто-нибудь знает решение для этого? нет прокрутки для содержимого в задней части, когда диалоговое окно открывается, и нет движения при отключении прокрутки ...?

Ответы на вопрос(5)

Ваш ответ на вопрос