菜单打开时,Mobile Safari会阻止正文滚动

时间:2014-08-27 05:27:44

标签: javascript css mobile-safari

我已经和这件事打了几个星期了。我无法弄清楚。

我打算在菜单打开时阻止身体水平滚动。这是一个完整的jsbin:

http://jsbin.com/vopeq/38/edit

似乎任何解决方案只会撤消其他按照我希望的方式工作的东西。所以我将需求添加到jsbin中以跟踪每个版本对哪些内容感到满意。

更新

也许它太好了不可能,但我认为我满足所有要求,但我仍然需要检查Android设备:

http://jsbin.com/vopeq/61

我学到的东西,这让我耽误了这么长时间而且我没有意识到,overflow: hidden元素在移动Safari中的<body>并没有。蹲下!我不得不移动我的样式以防止向下滚动一级元素。

Ed4指出了我正确的方向。我需要在overflow: hidden而不是元素本身的元素的父元素上设置left: 85%(我试图在<body>上完成所有操作。)< / p>

所以我有一个body > .container,我在overflow: hiddenbody > .container > .content上使用position: relativeleft: 85%进行推送。

1 个答案:

答案 0 :(得分:1)

你的问题更多的是设计规范而不是问题,所以我没有尝试为你设计整个布局,而是指出你的jsbin无法正常工作的原因。

请勿尝试在left上设置body。如果body在屏幕外突出,则您无法可靠地停止滚动。

相反,保持body静止,宽度和高度均为100%,因此它可以作为可见的窗口边界。如果要锁定滚动,可以在overflow: hidden上设置body。处理滑动和滚动菜单,在体内有单独的div。