Answers:
我遇到了类似的问题,发现同时适用overflow: hidden;
于两者html
并body
解决了我的问题。
html,
body {
overflow: hidden;
}
对于iOS 9,您可能需要改用以下命令:(谢谢chaenu!)
html,
body {
overflow: hidden;
position: relative;
height: 100%;
}
position: relative
。
body {
position:relative; // that's it
overflow:hidden;
}
拉伸弹性滚动时,此处列出的某些解决方案有一些奇怪的故障。要解决我使用的问题:
body.lock-position {
height: 100%;
overflow: hidden;
width: 100%;
position: fixed;
}
资料来源:http : //www.teamtownend.com/2013/07/ios-prevent-scrolling-on-body/
position: relative
),但是在恢复默认样式(例如关闭菜单)后滚动位置丢失了。
// on menu open // save window pos $('body').attr( 'data-pos', $(window).scrollTop() ) ; // ... // on menu close // scroll to saved window pos $( window ).scrollTop( $('body').attr( 'data-pos' ) );
将这里的答案和评论以及这里的类似问题结合起来,对我来说很有效。
因此,发布整体答案。
这是您需要在<body>
标记内的网站内容周围放置一个包装div的方法。
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<!-- other meta and head stuff here -->
<head>
<body>
<div class="wrapper">
<!-- Your site content here -->
</div>
</body>
</html>
创建如下的包装器类。
.wrapper{
position:relative; //that's it
overflow:hidden;
}
而且这里的答案也引起了一些思考。在台式机和设备上可能同样有效的东西。
我曾经<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)上都可以正常使用。
欢迎小费和改进:)
干杯!
是的,这与safari中的新更新有关,如果您使用overflow:隐藏,则会破坏布局,以清除div。
这是我做的事情:检查身体y的位置,然后固定身体并将顶部调整为该位置的负值。反之,我将主体设为静态,并将滚动条设置为我之前记录的值。
var body_x_position = 0;
function disable_bk_scrl(){
var elb = document.querySelector('body');
body_x_position = elb.scrollTop;
// get scroll position in px
var body_x_position_m = body_x_position*(-1);
console.log(body_x_position);
document.body.style.position = "fixed";
$('body').css({ top: body_x_position_m });
}
function enable_bk_scrl(){
document.body.style.position = "static";
document.body.scrollTo(0, body_x_position);
console.log(body_x_position);
}
只需将主体高度更改为<300像素(陆地上的移动视口的高度约为300像素至500像素)
JS
$( '.offcanvas-toggle' ).on( 'click', function() {
$( 'body' ).toggleClass( 'offcanvas-expanded' );
});
的CSS
.offcanvas-expended { /* this is class added to body on click */
height: 200px;
}
.offcanvas {
height: 100%;
}