JS动画优化之requestAnimationFrame

之前在Google的博客上看到说针对视觉更新避免setTimeout 或 setInterval 一律改为使用 requestAnimationFrame,那么requestAnimationFrame是什么?为什么要替换成它呢?

window.requestAnimationFrame() 方法告诉浏览器您希望执行动画并请求浏览器在下一次重绘之前调用指定的函数来更新动画。该方法使用一个回调函数作为参数,这个回调函数会在浏览器重绘之前调用。

通常在浏览器中想要执行一段动画,一般设置个定时器以某一间隔重复执行动作,但这么做有几个问题

  • 这个时间间隔因设备性能不同无法确认
  • 回调会在某一点执行,这个点可能就是结束之时,这样可能会遗留掉某个画面从而导致闪动
  • 不必要的渲染,如tab切换

使用requestAnimationFrame可以避免这个问题,让浏览器引擎来决定这个渲染时机

附录:requestAnimationFrame兼容性


requestAnimationFrame.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容