Xan*_*fer 5 javascript events android dom
我创建了一个带有视差街景的网站.请参阅此处获取存档版本.
它适用于所有主流桌面浏览器和Safari Mobile.它在Mobile Firefox和Chrome for Android Beta中也能很好地工作.但是,默认的Android浏览器存在滚动事件的问题.让我说清楚.滚动不是问题.div根据需要滚动.滚动事件不会触发.我在Honeycomb和ICS上遇到过这个问题.
我不关心其他移动浏览器,因为对于移动屏幕尺寸,人们通常看不到视差场景; mediaqueries和条件JavaScript加载可以解决这个问题.响应式设计和所有爵士乐.
基本上,我写了一个parallise()jQuery插件,根据它的位置和"深度"定位每个图像.此函数绑定到scroll事件.
在Android浏览器中,此事件仅在下一次触摸开始时触发,而不是连续触发.
好了,我想也许如果我绑定的功能touchstart,touchmove以及touchend事件我会解决我的问题.没有雪茄.其他触摸事件也被窃听.应用建议的解决方法会导致事件触发,但正如我e.preventDefault()所知,滚动(练习的整个点)被禁用.
如果我只是相对于窗口div轮询舞台div的位置怎么办?事实证明,位置信息仅在下一次触摸开始时更新.
我在我的系绳的尽头.任何帮助将非常感激.
即使触摸事件在有缺陷的 Android 版本上正常工作,并且您可以在拖动过程中有效地跟踪本机滚动位置,这也很容易出错。例如,它不会考虑触摸完成后发生的动量动画。
iOS 和 Android 为提高滚动性能做出了牺牲。在这两个平台上,在滚动完成之前不可能获得准确的滚动位置。在动量动画完成之前,滚动事件(在 上<body>)不会触发。因此,虽然您最初的问题是关于溢出上的滚动事件<div>,但修复此问题可能对您并不完全有帮助。
如果您希望动画随着滚动及时更新,那么您需要以编程方式执行滚动,而不是使用浏览器的本机滚动。执行此操作的最佳库是iScroll。您可以非常轻松地实现视差效果,如本演示所示。
如果您需要更复杂的效果(在您的示例中为行走角色),您可以选择 iScroll 的“探针”版本,它允许对滚动位置进行像素完美轮询,但会降低性能。
然而,使用 iScroll 有很多缺点:
| 归档时间: |
|
| 查看次数: |
4927 次 |
| 最近记录: |