我最近一直在开发移动Web应用程序。我正在进行面向移动优化,目前专注于iPhone的iOS系统。我不想要一个精确的本地应用程序外观,但我认为具有本地感觉是绝对重要的。我已经根据这个想法制作了标记和CSS,留下了这个(为了更好地理解我后面遇到的问题而进行了注释):
这一切都没有问题,它还具有本地感觉的优点,静态头部和页脚,以及可滚动的内部视图(感谢-webkit-overflow-scrolling: touch
)。正如任何使用iOS超过5分钟的人所知道的那样,当您向上或向下滚动时,会出现一些不错的动量滚动。此外,当您到达列表顶部时,会出现一个漂亮的“弹跳”效果:
我觉得这有助于定义iOS的感觉,一个小细节可以产生很大的影响。幸运的是,在Web应用程序中的可滚动元素中,当您在列表顶部以下并向上滚动时,您会获得相同的效果。这就是所期望的行为:
然而,当你在列表顶部,并尝试重新创建与Setting.app(如上图所示)相同的弹跳行为时,我们会得到以下不希望的行为:
我在Stack Overflow上看到了一些类似的问题,但它们都选择禁用弹跳。我想知道是否有可能保持弹跳,但始终使其发生在body section section#main
上,而不是在Web应用程序的框架上。我没有使用jQuery,因此我更喜欢直接使用JavaScript的答案(如果有CSS解决方案,那就更好了,额外加分)。
这里有一个GitHub仓库,包含所有代码(Sinatra、HAML和Sass;当前分支为so
),或者一个JSFiddle,其中图片和链接已经损坏,但可以在iPhone上显示问题(最好将其添加到主屏幕进行测试)。