Я работал с <body>
и<div class="wrapper">
Когда откроется всплывающее окно ...
<body>
получает высоту 100% и переполнение: скрыто
<div class="wrapper">
получает положение: относительное; переполнение: скрытое; высота: 100%;
Я использую JS / jQuery, чтобы получить фактическую позицию прокрутки страницы и сохранить значение как атрибут данных для тела
Затем я прокручиваю до позиции прокрутки в .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).
Советы и улучшения приветствуются :)
Ура!