像css的transition和animation这类动画效果其实都是用setTimeout之类的函数来实现的吗?

动画效果如果追寻到底层的话,其实都是用一些延迟重复的函数重复执行某段代码实现的吗?
我是想着一些简单的过度效果可以用js的setTimeout来实现,这样可以解决兼容问题。
但是总感觉用setTimeout这类函数来做动画效果有点低效率。

阅读 3.7k
3 个回答

浏览器有布局引擎(html/css),脚本引擎(js)等部分组成的

setTimeout是脚本引擎的范围
animation是布局引擎的范围
它们都是浏览器c/c++代码实现的,和js关系不大

-----------------------------补充1-------------------------------------

题主本意是要用js实现特效达到兼容性的效果是吧?
用js实现确实会比原生实现效率低很多。但是如果你一个页面同一时间就一两处有特效,这个就不是很重要了。
比如js比c慢3倍以上,但是做个页面的逻辑完全无影响。

你用setTimeout这个方法创造运动效果或者其它的效果,都会操作dom,当然会有一点效率低了啊。正如楼上所说的引擎,用引擎驱动的当然比你操作dom在去驱动浏览器的线程要好,不然耶不会创造transition等之类的了

完全不一样的,css的动画甚至能开启GPU加速,和js的DOM操作是不同的实现

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题