如何使用Modernizr检测立即滚动事件的支持?

时间:2015-04-08 19:04:06

标签: animation parallax modernizr scrollmagic

我使用ScrollMagic在网页的每个部分触发动画。这适用于桌面和移动设备上的某些浏览器。

但是有一些移动浏览器(旧版本的Safari和Chrome(在ipad上))在滚动事件结束之前不会播放这些动画。我知道有办法解决这个问题。但是,我想在不支持的情况下关闭这些动画。

有没有办法用Modernizr检测到它?或者我是否必须针对特定的浏览器及其版本?

2 个答案:

答案 0 :(得分:0)

你不会检测到视差动画。这不是一个浏览器功能,您可以使用浏览器功能来完成。

在这种情况下,您会想要检测是否在滚动期间重排页面,或者它是否等到滚动事件触发后。目前还没有检测到这一点,创建一个会变得非常油腻。

我相信您所看到的是scroll事件在某些浏览器上滚动时未触发的结果。我想不出用javascript来模拟这个的方法(触发滚动事件显然只会触发一个scroll事件,所以没有任何东西可以获得)。因此,我不相信您能够准确地检测到这一点。

答案 1 :(得分:0)

我完全同意Patrick's answer,但我想补充一点,确实可以在chrome和safari的移动版本上立即滚动事件,你正在谈论。

您所描述的问题与版本8之前的所有iOS设备有关。
在此之前,移动浏览器引擎在滚动时没有触发“真实”滚动事件,但只有一次滚动完全停止(因此惯性停止后)。即使javascript的执行被暂停,所以你不能只运行一个循环来检查滚动位置。

长话短说:有很多方法可以使用容器进行滚动和requestAnimationFrame 我发现获取iOS8设备前滚动事件的最简单方法是iScroll

我建议看一下:http://janpaepke.github.io/ScrollMagic/examples/advanced/mobile_basic.html
这个:
http://janpaepke.github.io/ScrollMagic/examples/expert/mobile_advanced.html

回到原来的问题:如何检测何时甚至需要这些解决方法 您需要检查您是否使用iOS 7或更低版​​本,据我所知,这是不能用modernizr完成的,因为它是一个功能检测库。

请查看此主题以了解详情:Detect iOS version less than 5 with JavaScript