移动Safari:惰性滚动身体和最小的用户界面行为?

这个问题需要一些解释,所以请忍受我。

与stream行的观点相反,在默认情况下,Mobile Safari的网页上并没有启用惯性滚动(非常stream畅的60fps滚动)。 由于它在用户体验方面造成了一个不同的世界,我经过对iOS的Modernizrtesting后,dynamic地将这个CSS应用到了页面的HTML和BODY元素,

<style> .touchscroll { overflow: auto; -webkit-overflow-scrolling: touch; position:relative; height:100%; } .touchscroll body { height:100%; overflow: auto; -webkit-overflow-scrolling: touch; position:relative; } </style> 

以上基本上使body元素成为一个可滚动的元素,通过-webkit-overflow-scrolling:touch,在整个页面上获得平滑的滚动效果。 关于这个解决scheme的更多背景可以在这里find( 免责声明 :我自己的文章)。

它的工作,迄今为止,这么好。 问题是,这个解决scheme有效地禁用了另一个高度期望的移动Safari的行为:通常,当向下滚动时,它会使地址栏更小,并完全隐藏浏览器的底部栏。 滚动时,它们会重新出现。

不幸的是,上述技术出于某种原因禁用了这个function。 是的,我们有超级顺畅的滚动,但浏览器栏总是很大,底栏永久保持可见,都占用宝贵的空间。

因此,我的问题是,我可以兼得吗? 我想在整个页面上进行超级平滑滚动,但是我也希望在滚动时浏览器元素的默认隐藏行为。

我正在使用这个网站的一个例子是: http : //www.jungledragon.com/

如果您在Mobile Safari中打开该窗口,您将看到平滑的滚动,而不是在向下滚动时隐藏浏览器元素。

我想你正在设置<html><body>元素滚动。 您应该将这些CSS规则应用于您想要滚动的1个元素。

所以无论是htmlbody ,而不是两个。