Javascript 创建一个;粘的;在iOS Safari上工作的固定位置项目

Javascript 创建一个;粘的;在iOS Safari上工作的固定位置项目,javascript,ios,onscroll,Javascript,Ios,Onscroll,在iOS safari上,在用户停止平移之前,单指平移不会生成任何事件。只有当页面停止移动并重新绘制时,才会生成onscroll事件 我需要一种方法来检测实时滚动。具体来说,我想制作一个粘性菜单,它也可以在iOS safari上使用。在非移动浏览器上,在监听onscroll事件时,可以通过在元素上的“相对位置”和“固定位置”之间切换来实现粘性菜单。此方法在移动浏览器上不起作用,因为onscroll事件不会连续触发。我能做什么?如果您只需要一个粘性菜单,那么使用现有的库就可以省去一些麻烦。我在iS

在iOS safari上,在用户停止平移之前,单指平移不会生成任何事件。只有当页面停止移动并重新绘制时,才会生成onscroll事件


我需要一种方法来检测实时滚动。具体来说,我想制作一个粘性菜单,它也可以在iOS safari上使用。在非移动浏览器上,在监听onscroll事件时,可以通过在元素上的“相对位置”和“固定位置”之间切换来实现粘性菜单。此方法在移动浏览器上不起作用,因为onscroll事件不会连续触发。我能做什么?

如果您只需要一个粘性菜单,那么使用现有的库就可以省去一些麻烦。我在iScroll方面取得了成功:

至少,您可以看看这是如何工作的,并以此为基础制定解决方案


快乐的黑客

当然是老话题了,但我可以在这里看到很多访问。如果你想要的只是一个粘性菜单,你可以使用固定定位。那里不需要iScroll。

我最近花了很多时间试图为同样的问题想出一个切实可行的解决方案。没有正确的方法可以做到这一点,尽管有一些不错的黑客(其中大多数已经提到)。问题在于,当用户滚动时,JavaScript被暂停。当你考虑它的含义时,它是有意义的,但是它使得实现固定的定位元素变得非常困难。p> 我能找到的最好的东西就是谷歌的人写的这篇精彩的文章。您可以在mobile safari中查看它的运行情况


希望这能有所帮助。

我也遇到了类似的问题,使用jquery将处理程序绑定到touchstart/touchmove/touchend,以检测单手指滚动,效果非常好。在我的例子中,我需要移动另一个元素,移动量与尝试移动另一个元素的移动量相同,并且它在尝试滚动时更新得很好,因此它应该适合您的要求。

回答我自己的问题。iOS7现在支持位置:粘性
演示:

实现它的一种方法(尽管是黑客式的)可能是识别您自己的垂直平移手势并将其添加到web视图中。通过这种方式,您可以使用-state属性接收事件。绑定到touch move并监视页面的y。应该指出的是,许多移动浏览器都不支持固定定位。更多信息:应该指出的是,提出问题的人只是找到了一个比我的解决方案支持率低得多的解决方案。。。我不同意你关于支持立场的陈述:修正:有什么不同意的?“iOS Safari中的部分支持是指错误行为。”那么,大约50%的移动浏览器中的错误行为是否为您所接受?该链接会重定向到开发者主页。我能找到的最好的方法是通过archive.org: