CSS和JS動畫,那個的效率更好。

來源:互聯網
上載者:User

首先,不要把JavaScript和jQuery錯誤的混為一談。 jQuery展示動畫會比原生JavaScript慢。 原因是儘管jQuery非常強大,但是他的目標從來不是成為一個高效能的動畫引擎。

由於jQuery提供了多種動畫介面,所以無法避免布局抖動的問題。jQuery的記憶體消耗頻會繁觸發記憶體回收機制,造成動畫丟幀的問題。jQuery為了保護其自身的動畫機制,使用setInterval取代requestAnimationFrame.

CSS的Transition

CSS的Transition的動畫邏輯是有流浪器來執行的,所以它的效能比JQuery動畫好。處理機制:

通過最佳化DOM操作,避免記憶體消耗來減少卡頓使用與requestAnimationFrame類似的機制強制使用硬體(GPU來提高動畫效能)加速

使用RAF介面並不需對現有的庫進行重構。 下面來比較一下RAF與setInterval的基礎用法:

var startingTop = 0;/* setInterval:為了達到60fps把間隔設為16ms   (1000ms/60 ~= 16ms). */setInterval(function() {    /* 因為此處每秒執行60次,所以我們將top屬性的增量設定為1/60秒 */    element.style.top = (startingTop += 1/60);}, 16);/* requestAnimationFrame: 當瀏覽器處於正常時,嘗試以60fps運行 */function tick () {    element.style.top = (startingTop += 1/60);}window.requestAnimationFrame(tick);

結論:使用RFA會以很少的代碼改動量擷取更高的動畫效能

說明

但是,是不是JavaScript就是比CSS Transition效能差呢。能不能讓JavaScript效能上更好呢。

移動端開發時,如果有簡單的狀態切換時,單純使用CSS Transition即可,如果有比較多的UI互動時,可以

使用Transit(JavaScript控制CSS Transition)。因此JavaScript是可以比CSS Transition效能更好。

Velocity.js

GreenSock動畫(GSAP)的功能豐富並不意味著Velocity自身的功能弱。 相反,Velocity不僅包含了jQuery的$.animate()的所有功能 ,而且還整合了顏色動畫, transforms, 迴圈, easings, 類動畫, 滾動動畫。所有的這一切,壓縮後僅僅只有7KB

簡而言之,Velocity相當於是把jQuery,jQuery UI,和CSS transitions結合了起來。

此外,從使用的角度來看,Velocity使用了jQuery的 .queue()方法,從而與jQuery的 .queue()方法,從而與jQuery的.animate() , .fade(), .fade() ,.delay() 功能無縫結合。由於Velocity的文法與$.animate() 是相同的, 所以你不需要改變你頁面中的代碼 。

先讓我們來初步瞭解一下 Velocity.js 與 $.animate()的相同點 :

$element    .delay(1000)    /* 用Velocity控制元素的向上運動持續2000ms */    .velocity({ top: "50%" }, 2000)    /* 當元素向上運動的動作完成後 使用jQuery內建的方法使元素淡出 */    .fadeOut(1000);

進一步,可以建立一個3D滾動的動畫情境也只是兩個簡單的代碼:

$element    /* 在1000ms內將瀏覽器滾動到元素的上方 */    .velocity("scroll", 1000)    /* 然後使元素沿著他的Y軸旋轉360度 */    .velocity({ rotateY: "360deg" }, 1000);
相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.