我最近一直在开发移动网络应用程序。我正在优化移动优先,现在专门针对 iPhone 的 iOS。我不想要原生应用的精确外观,但我认为原生的感觉是绝对重要的。我制作了标记和 CSS 来反映这个想法,给我留下了这个(注释以更好地理解我稍后遇到的问题):
这一切都没有问题,而且它还具有原生感觉、静态页眉和页脚以及可滚动的内部视图的优点(感谢-webkit-overflow-scrolling: touch
)。
任何使用 iOS 超过 5 分钟的人都会知道,当您向上或向下滚动时,您会获得一些不错的滚动动力。此外,当您点击列表顶部时,您会获得很好的“反弹”效果:
我觉得这有助于定义 iOS 的感觉,这样一个小细节可以大有帮助。幸运的是,当您在 web 应用程序的可滚动元素中位于列表顶部下方并滚动超过顶部时,您将获得相同的效果。这是期望的行为:
但是,当您位于列表顶部并尝试在列表顶部重新创建相同的弹跳行为时(à la Setting.app,如上所示),我们会得到以下行为,这是不希望的:
我在 Stack Overflow 上看到过一些类似的 问题,但这些都选择禁用弹跳。我想知道是否有可能继续弹跳,但总是让它发生在body section section#main
,而不是 webapp 的 chrome 上。我没有使用 jQuery,所以我更喜欢直接使用 JavaScript 的答案(不过,CSS 解决方案的加分项)。