如果我正确解释了您的问题,多年来我们一直在开发跨平台移动网络应用程序时遇到同样的问题,试图让所有不同的专有滚动功能在每个设备上正常工作:Apple iOS、Google Android、Windows手机、笔记本电脑 Chrome、笔记本电脑 Safari、IE 和笔记本电脑 Edge。
jQuery Mobile 继续尝试在其框架范围内解决此问题,但由于每个设备制造商/操作系统制造商的不断更新,这太过分了。
是的,我们为每个单独的移动设备提供了解决方案。我们已经测试过,但没有认真考虑为每个设备开发设备选择性分页框架,要求我们检测每个设备并为每个设备提供一个略有不同的框架。基本上维护至少 3 个和实际上多达 12 个不同版本的代码,这是一个非常糟糕的主意。
解决方案:我们最幸运的是将持久的页眉和页脚放在页面框架的顶部。为简单起见,以下是使用内联样式的通用解决方案:
<html>
<head>
<title>Fixed Header and Footer on All Mobile Web Apps</title>
<meta name="viewport" content="user-scalable=no, initial-scale=1.0, maximum-scale=1.0" />
<style>
html, body { height:100%; width:100%; }
</style>
</head>
<body>
<div style="position: fixed; height:100%; width:100%; top:0; left:0;">
<div style="height:calc(100% - 1px); width:100%; margin-top: 60px; z-index: 1; overflow-y: scroll; -webkit-overflow-scrolling: touch;">
[Body Content That Can Scroll if it extends beyond screen...]
</div>
<div style="position: absolute; top:0; left:0; width:100%; height: 60px; background:#dddddd; z-index:10;">
[Header Content...]
</div>
<div style="position: absolute; bottom:0; left:0; width:100%; height: 40px; background:#cccccc; z-index:11;">
[Footer Content...]
</div>
</div>
</body>
</html>
因此,Body 可以是任何 jQuery Mobile 页面集。事实上,从理论上讲,Body 几乎可以是任何框架中的任何内容。
特别注意,高度为:calc(100% - 1px); 是关键的魔法。
这个问题看似无限的组合或排列,几乎成了我们这些年来的讨伐,试图找到最纯粹、最简单、最通用的解决方案。因此,在为该主题投入了大量令人尴尬的工时后,这不仅是我们最好的解决方案,而且还是我们发现的唯一一种通用兼容的方法,它还能让您坚持使用单一的代码库。它已在最新版本的 iOS、Windows Phone、Android、笔记本电脑 Chrome、笔记本电脑 Safari、PhoneGap、笔记本电脑 Firefox、IE 9-11 和 Windows Edge 上成功测试。
标签:移动应用、网络应用、固定页眉、固定页脚、持久页眉、持久页脚、滚动问题、iOS 滚动反弹、Chrome 滚动反弹、Android 滚动反弹、webkit 滚动问题、webkit 触摸滚动、iOS 触摸滚动问题