Я работал с <body>
и <div class="wrapper">
Когда открывается всплывающее окно ...
<body>
получает высоту 100% и переполнение: скрыто
<div class="wrapper">
получает положение: относительное; переполнение: скрытое; высота: 100%;
Я использую JS / jQuery для получения фактической позиции прокрутки страницы и сохраняю значение как атрибут data-атрибута body
Затем я прокручиваю до положения прокрутки в .wrapper DIV (не в окне)
Вот мое решение:
JS / JQuery:
// when popup opens
$('body').attr( 'data-pos', $(window).scrollTop()); // get actual scrollpos
$('body').addClass('locked'); // add class to body
$('.wrapper').scrollTop( $('body').attr( 'data-pos' ) ); // let wrapper scroll to scrollpos
// when popup close
$("body").removeClass('locked');
$( window ).scrollTop( $('body').attr( 'data-pos' ));
CSS:
body.locked {position:relative;overflow:hidden;height:100%;}
body.locked .wrapper {position:relative;overflow:hidden;height:100%;}
Хорошо работает с обеих сторон ... для ПК и мобильных устройств (iOS).
Типы и улучшения приветствуются:)
Ура!