提高CSS3动画的性能



我的网站在firefox上运行了惊人,但在Chrome上非常杂乱。这是一个完整的动画网站,其中包含许多CSS3滚动动画,这些动画由jQuery Waypoints触发,我编写的脚本添加和删除了与Scroll的类。

是否有一种方法可以强制其在Chrome浏览器上的表现更好?

这是网站:http://www.aikoncreative.com/

它很复杂。您正在使用jQuery动画,并且有一些麻烦:

  1. jQuery。与CSS动画相比,性能差,因为不使用GPU,仅使用CPU,因此运动不像CSS过渡那样光滑。
  2. jQuery.Animate不使用requestAnimationFrame执行动画。它使用settimeout或setInterval,因此性能最差。

我的推荐是尝试避免使用jQuery动画功能,创建CSS类以创建本机CSS动画并添加类,同时您滚动和(非常重要),使用requestAnimationFrame优化滚动事件,并尽可能少地计算。

请阅读保罗·刘易斯(Paul Lewis)的这篇文章,非常棒:http://www.html5rocks.com/en/tutorials/speed/animations/

(编辑)添加更多信息: 我在您的代码内部使用Chrome Dev工具进行了几个小时,我在函数步骤上看到了一个可怕的瓶颈。JS在函数步骤上称为:ssc_wheel => ssc_scroll => function步骤(33秒,63秒,63秒...)。此功能"步骤"一次又一次地执行,因此CPU将杀死。为了增强性能,我建议您首先使用requestAnimationFrame调用它,然后我们可以再次查看是否有积极的效果(如果您做得很好,您会看到更好的增强功能)。阅读文章以通过requestAnimationFrame增强滚动:)

请记住这一点,而您将编辑代码:"在诸如滚动之类的事件上,放置一个布尔变量,指示有事件滚动,如果其值为false,则将此变量设置为trui,然后调用您的函数以检查或检查使用requestAnimationframe更新动画,例如" requestAnimationFrame(animatemyPage)"。您将需要等待下一个帧!在" AnimAtemypage"的末尾也将设置为滚动事件中使用的false变量,以避免使用requestAnimationFrame('AnimAteMypage')的不确定呼叫。

这些是一些步骤,但是还有更多,但是,请首先尝试进行此增强。

最新更新