我使用ScrollMagic在网页的每个部分触发动画。这适用于桌面和移动设备上的某些浏览器。
但是有一些移动浏览器(旧版本的Safari和Chrome(在ipad上))在滚动事件结束之前不会播放这些动画。我知道有办法解决这个问题。但是,我想在不支持的情况下关闭这些动画。
有没有办法用Modernizr检测到它?或者我是否必须针对特定的浏览器及其版本?
答案 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