如果我对您的问题的解释正确,那么多年来我们在开发跨平台移动网络应用程序时遇到了同样的问题,试图让所有不同的专有滚动功能在每台设备上都能正常工作:Apple iOS、Google Android、Windows Phone、笔记本电脑 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 触摸滚动问题