我正在开发一个 iPad HTML5 应用程序,并且我已经实现了 ontouch 支持以更快地触发事件,并且我正在使用 jQuery 来更轻松地定位元素,但是对于动画我使用的是 CSS3 过渡
你觉得哪个更快?使用 jQuery 动画,因为我已经导入了库,或者在使用 jQuery 定位元素时使用 CSS3 过渡?
我正在开发一个 iPad HTML5 应用程序,并且我已经实现了 ontouch 支持以更快地触发事件,并且我正在使用 jQuery 来更轻松地定位元素,但是对于动画我使用的是 CSS3 过渡
你觉得哪个更快?使用 jQuery 动画,因为我已经导入了库,或者在使用 jQuery 定位元素时使用 CSS3 过渡?
根据这个链接,jQuery 动画比 css 动画慢得多。
原因可能是因为 jquery 必须使用计时器和循环来修改 DOM 元素的 props。CSS 是浏览器引擎的一部分。这在很大程度上取决于系统的硬件。您还可以在 Chrome 或 Firefox 的分析中检查这一点。
CSS 动画几乎总是更快。
CSS 过渡和 jQuery 动画的头对头比较。转换不是设置一个重复运行的计时器,而是由浏览器本地处理。在我相当不科学的测试中,过渡总是更快,以更高的帧速率运行,尤其是在大量元素的情况下。它们还具有可以轻松动画颜色的优点,而不必依赖插件。
http://css.dzone.com/articles/css3-transitions-vs-jquery
相关问题: CSS 过渡与 JS 动画包的性能
CSS3 过渡应该更快,因为它们是浏览器原生的。
这篇文章 (http://css-tricks.com/myth-busting-css-animations-vs-javascript/)对 CSS 转换、jQuery 动画和 GSAP(另一个 JavaScript 库)进行了很好的比较。
CSS 动画比 jQuery 快得多。然而,在我测试过的大多数设备和浏览器上,基于 JavaScript 的 GSAP 的表现甚至比 CSS 动画还要好
所以CSS 转换比 jQuery 动画快,但是不要让这让你认为 CSS 转换比JavaScript快。GSAP 表明JavaScript 可以胜过 CSS。
它的 css3 更快,消耗更少的内存并且更流畅。CSS 处理器是用 C++ 编写的,本机代码执行速度非常快,而 jQuery (JavaScript) 是一种解释性语言,浏览器无法及时预测 JavaScript。 http://dev.opera.com/articles/view/css3-vs-jquery-animations/
查看上面的链接了解关于 CSS3 与 jQuery 的实验
CSS3 会更快,因为它是浏览器的标准配置,因为 JQuery 是另一个必须加载的文件,但是我发现根据动画,JQuery 可以运行得更流畅。有时,一次又一次地尝试纯 Javascript 也很好。
Mozilla 开发者文档提出了一些关于 CSS3 动画的有趣观点:
让浏览器控制动画序列可以让浏览器优化性能和效率,例如,降低在当前不可见的选项卡中运行的动画的更新频率。
WebKit(支持 Safari)也利用了硬件加速合成,这对性能的影响比 Javascript 目前所能做的任何事情都要大得多。(我认为这将很快改变,尽管随着更多功能被添加来管理计算)这是因为它会利用专用硬件来执行计算,而不是通过像 Javascript 这样的翻译语言来实现。
我不能 100% 确定iPad 上的WebKit 是否是硬件加速的;然而,有理由认为,因为它是标准化的并且越来越受欢迎,这只会随着时间的推移而改善。
从这里
CSS 过渡和 jQuery 动画的头对头比较。转换不是设置一个重复运行的计时器,而是由浏览器本地处理。在我相当不科学的测试中,过渡总是更快,以更高的帧速率运行,尤其是在大量元素的情况下。它们还具有可以轻松动画颜色的优点,而不必依赖插件。
这里有一个测试和这个结论。
基于计时器的 Javascript 动画永远不会像原生动画那样快,因为它们无法访问足够多的浏览器来进行相同的优化。这些动画应该仅在旧版浏览器中用作后备。
还要注意这一点,
CSS3 动画非常棒,但确实会消耗大量处理器的能力。无法像使用 jQuery 之类的框架一样使用 CSS3 微调动画。所以,只要 CSS3 动画对 CPU 不友好,你最好坚持使用 jQuery。
Native 应该更快,但如果浏览器开发人员马虎(或懒惰),他们会编写糟糕的代码,这会导致 CSS 动画(或过渡)效果不佳。
如今,jQuery 有一个插件,它用“改进”的插件覆盖了“动画”功能。见速度。我没有涉及使用 javascript 为 DOM 设置动画的其他方式,因为它超出了这个问题的范围。
所以,按原样,jQuery 比 CSS 慢。此外,CSS 更容易编写,因为您可能已经有了元素样式,因此添加一些规则很容易,与您需要在某个地方开始编写 JS 并管理它的情况相比。但是对于复杂、繁重的东西,JS 是更快,可悲的是。
关于这个确切问题的一篇非常好的文章 - http://davidwalsh.name/css-js-animation
如果您正在使用带有 canvas 标签的 jQuery/javascript 动画(如果我没记错的话,它仍然依赖于计时器......不过是新手),那么它为您提供了使用 javascript 进行硬件加速的优势。如果您只是想在悬停时移动某些东西,那么过渡效果很好。CSS 过渡可能会运行得更流畅一些,但这是一种折衷,您通过使用过渡放弃了对动画的大量 javascript 控制。我喜欢保持 CSS 中的样式和 JS 中的行为——这不就是它应该如何工作的吗?CSS 转换有点打破了这种逻辑......