We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
最近要做动画有关的东西,看了两天动画有关的知识,零零散散的先记录下来。
动画间隔决定了动画的每秒帧数(FPS),一般的,FPS越高,动画就表现得越流畅,FPS偏低,动画就会不流畅、卡顿。JQuery中,动画间隔默认为13ms,也就是说理想状态下,动画的每秒帧数是70(1000/13)多。
但是动画间隔并非越短就越流畅,因为浏览器需要渲染的时间,所以间隔一方面必须足够短,从而使不同的动画都能流畅的进行,别一方面还要足够长,使得浏览器可以完成渲染。没有找到官方的文档,网上的文章大多倾向于13ms。
参考:
setInterval 和 setTimeout 的缺陷:
setInterval
setTimeout
CSS transitions 和 animations 的优势在于浏览器知道哪些动画将会发生,所以得到正确的间隔来刷新UI。而javascript动画,浏览器不知道动画正在发生,所以催生了requestAnimationFrame,对于延迟做了很大程度的优化。
transitions
animations
注意:在有多个动画时,出现一个可见一个不可见,requestAnimationFrame 会导致动画不同步,所以, 指定一个参数确保所有需要同步的动画状态,不受可见程度的影响(如一组动画从开始以来经过的时间),而不是根据每个动画的前一帧。
兼容各浏览器的 requestAnimationFrame 方法:RAF.js。
requestAnimationFrame
目前的动画库基本通过两种方式:css3 和 canvas,css3难度相对小一些,但降级方案成本比较大,canvas学习成本会高一些,具体的降级方案还有待研究。
css3
canvas
在做之前,需要先确认好具体要支持哪些需求,别人怎么使用,然后再选择一个最优的方案。
The text was updated successfully, but these errors were encountered:
先了解一个概念,FPS(帧率):描述每秒播放的帧数,单位为 Hz 或者 frame/s (帧/秒)。
一般来说,FPS越高,也就是每秒播放的帧数越多,动画会越流畅,但是,因为大部分的显示器刷新频率是 60Hz,当动画的FPS超过 60Hz 时,显示器会把两个或更多的帧显示在同一画面上,这样就会出现 画面撕裂,画面撕裂跟掉帧一个意思,所以通常来讲 FPS 为 60frame/s 时动画效果最好,也就是每帧16.67ms,在浏览器中要减去渲染时间1ms左右,得到的结果是每帧时间大概15ms。
但是我们可以在 jQuery 的源码中发现它的 interval 是13ms:jQuery.fx.interval = 13, 按照上面的说法:1000 /(13+1.5)= 70 > 60hz,这样会出现画面撕裂,作为业界标准的 jQuery 显然是不会出现这种低级错误的,所以2ms的差别是怎么个意思?John Resig有一篇博客对13ms做了解释,文章链接见末尾。
interval
jQuery.fx.interval = 13
因为jQuery的动画是基于 setInterval 的,所以会存在一定的延迟:
setTimeout(func, delay)
func
对于 setInterval 的问题,新的方法 requestAnimationFrame 是很好的改进,具体可参见The secret to silky smooth JavaScript animation!这篇文章。
参考链接:
Sorry, something went wrong.
No branches or pull requests
动画初探
最近要做动画有关的东西,看了两天动画有关的知识,零零散散的先记录下来。
业界动画引擎:
FPS:
动画间隔决定了动画的每秒帧数(FPS),一般的,FPS越高,动画就表现得越流畅,FPS偏低,动画就会不流畅、卡顿。JQuery中,动画间隔默认为13ms,也就是说理想状态下,动画的每秒帧数是70(1000/13)多。
但是动画间隔并非越短就越流畅,因为浏览器需要渲染的时间,所以间隔一方面必须足够短,从而使不同的动画都能流畅的进行,别一方面还要足够长,使得浏览器可以完成渲染。没有找到官方的文档,网上的文章大多倾向于13ms。
参考:
requestAnimationFrame:
setInterval
和setTimeout
的缺陷:CSS
transitions
和animations
的优势在于浏览器知道哪些动画将会发生,所以得到正确的间隔来刷新UI。而javascript动画,浏览器不知道动画正在发生,所以催生了requestAnimationFrame,对于延迟做了很大程度的优化。注意:在有多个动画时,出现一个可见一个不可见,requestAnimationFrame 会导致动画不同步,所以, 指定一个参数确保所有需要同步的动画状态,不受可见程度的影响(如一组动画从开始以来经过的时间),而不是根据每个动画的前一帧。
兼容各浏览器的
requestAnimationFrame
方法:RAF.js。总结:
目前的动画库基本通过两种方式:
css3
和canvas
,css3难度相对小一些,但降级方案成本比较大,canvas
学习成本会高一些,具体的降级方案还有待研究。在做之前,需要先确认好具体要支持哪些需求,别人怎么使用,然后再选择一个最优的方案。
The text was updated successfully, but these errors were encountered: