移动Safari中忽略溢出-x值

我们将overflow-x值设置为隐藏在正文和可滚动元素上,但移动Safari忽略这些值。 在桌面上,溢出值工作正常。

相关代码:

body { overflow-x:hidden; width:320px; height:100%; min-height:100%; margin:0; background:-webkit-linear-gradient(top,#e8e4dc,#f2f0eb); } .page_list, .content { max-height:370px; box-sizing:border-box; padding:0; overflow-x:hidden; overflow-y:auto; -webkit-overflow-scrolling:touch } #catalog_page { border-left:1px solid #CCC; z-index:28; position:absolute; top:0; width:200px; height:460px; background:white; -webkit-transition:-webkit-transform 0.1s ease-in;; -webkit-transform:translate3d(0,0,0); display:none; } 

catalog_page位于视口之外,只有在某人做了手势之后才能滑入视图。

重现:

1)在iPhone上访问www.tekiki.com (不是iPad)。 滚动到右侧,即使我们修正了主体宽度,您仍然会看到catalog_page如何扩展网站的宽度。

添加html { overflow: hidden; } html { overflow: hidden; }到你的CSS,它应该修复它。

在iOS 7.1 / 8.2上使用Mobile Safari进行testing以下代码对我来说都不适用。

html {overflow:hidden; }

我相信这是Mobile Safari的缺陷/function,其他浏览器(包括OSX上的Safari)运行良好。 但溢出:隐藏在iPhone / iPad的作品,如果你也设置位置:固定到HTML元素。 喜欢这个:

html {overflow:hidden; 位置:固定; }

添加HTML {overflow:hidden; }到你的CSS,它应该修复它。

这个解决scheme对我不起作用。

相反,我在体内创build一个包装div,并将overflow-x:hidden应用于包装:

CSS

 #wrapper { overflow-x: hidden; } 

HTML

 <html> ... <body> <div id="wrapper"> ... </div> </body> </html> 

在我的情况下,下面确实解决了这个问题

 body, html { overflow-x: hidden; } 

为了解决旧设备(iphone 3)的问题,我不得不混合这些解决scheme,因为它们不能单独工作。

我结束了添加一个包装div到html的身体:

 <html> <body> <div id="wrapper">....</div> </body> </html> 

并用以下的样式来devise:

 #wrapper { overflow: hidden } 

终于奏效了

如果html,body overflow-x: hidden; 是不是为你工作尝试寻找文字缩进。 例如flexslider的默认设置有一些元素设置为text-indent -9999px 。 我发现这是重写html溢出规则。