Bra*_*yer 12 javascript css jquery css-animations jquery-animate
我在搜索这个问题时遇到了困难,因为我能找到的大部分内容都是关于动画应该很快但行动缓慢的动画.我的问题是关于一个我希望持续时间很长但仍然流畅的动画.
我已经创建了这个jsfiddle来演示这个问题:http://jsfiddle.net/93Bqx/
我试图让一个元素随着时间的推移慢慢移动到另一个位置.但动画非常不稳定.
基本上,它归结为这样的事情:
$elem.animate({
left: x,
top: y
}, someLargeNumber);
Run Code Online (Sandbox Code Playgroud)
我想知道问题是动画是否太慢以至于每一步都小于一个像素,所以它将它们四舍五入为0或1使它看起来像是丢帧然后一次全部移动.但我不知道如何检查或解决这个问题.
有没有更好的方法来做慢动画,所以他们是顺利的?我有一个类似的用CSS3创建并且翻译(x,y)很顺利,但遗憾的是我需要比我认为可以用CSS获得更多的灵活性.
我想这是以编程方式进行动画的不可避免的讨价还价.也许尝试一个专门用于动画的框架,如:
http://www.greensock.com/gsap-js/
但是将动画调整为CSS将是最好的.
即使使用CSS过渡也不太顺畅.
我添加了Transit jQuery插件来测试CSS转换,它看起来几乎相同.
您的代码有一些小修复:http://jsfiddle.net/thirtydot/93Bqx/5/
相同的代码,但Transit补充说:http://jsfiddle.net/thirtydot/93Bqx/6/.
我认为这是(大多数?)浏览器不进行子像素渲染这一事实的限制.正如你提到的,x和y元素的动画的每一步之后是圆形的,它是这个四舍五入导致难看的"微动"的效果.
对于较少的病态测试用例,CSS过渡版本确实看起来明显更好.阅读本文以获取更多信息:http://www.paulirish.com/2012/why-moving-elements-with-translate-is-better-than-posabs-topleft/