ฉันเคยทำงานกับ<body>
และ<div class="wrapper">
เมื่อป๊อปอัปเปิดขึ้น ...
<body>
ได้รับความสูง 100% และล้น: ซ่อนอยู่
<div class="wrapper">
ได้รับตำแหน่ง: ญาติ; ล้น: ซ่อน; ความสูง: 100%;
ฉันใช้ JS / jQuery เพื่อรับการเลื่อนตำแหน่งจริงของหน้าและเก็บค่าเป็น data-attribut to 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)
ยินดีต้อนรับคำแนะนำและการปรับปรุง :)
ไชโย!