前端最佳化之動畫為什麼要盡量用css3代替js

來源:互聯網
上載者:User

標籤:原則   主線程   需求   瀏覽器   元素   包括   position   視覺   加速   

導致JavaScript效率低的兩大原因:操作DOM和使用頁面動畫。通常我們會通過頻繁的操作 DOM的CSS來實現視覺上的動畫效果,導致js效率低的兩個因素都包括在內了在頻繁的操作DOM和CSS時,瀏覽器會不停的執行重排和重繪,在PC版本的瀏覽器中,因為瀏覽器可用的記憶體比較大,使用者肉眼幾乎看不見頁面動畫產生的repaint和reflow,所以工程師幾乎無需過多的考慮動畫帶來的效能問題,但在行動裝置上可大有不同,行動裝置分配給內建瀏覽器的記憶體可沒有PC版本的瀏覽器記憶體可觀,目前對CSS3支援最好的莫過於webkit瀏覽器了,在webkit核心的瀏覽器,莫過於safari其次是chrome.

用CSS3動畫替代JS類比動畫的好處:

1. 不佔用JS主線程;

2. 可以利用硬體加速;

3. 瀏覽器可對動畫做最佳化(元素不可見時不動畫減少對FPS影響)

壞處是:

瀏覽器對渲染的批量非同步化處理讓動畫難以控制,此時可以用如下代碼來強制同步。

1 $.fn.repaint = function () {

2   this.each(function (item) {

3     return item.clientHeight;

4 }); 

5 }

CSS3動畫提供了2D和3D以及常規動畫屬性介面,它可以工作在頁面的任何一個元素的任意一個屬性,CSS3的動畫是利用C語言編寫的,它是系統層面的動畫

CSS3動畫與javascript類比動畫有以下區別:

1.  CSS 3D動畫在js中無法實現

CSS3的3D動畫是CSS3中非常強大的功能,因為它的工作原理是在一個三維的空間裡,因此js是無法類比出像CSS3那樣的3D動畫

2. CSS 2D矩陣動畫效率高於js利用margin和left,top類比的矩陣動畫

CSS3的2D動畫是指是2D矩陣Transform變化,js當然是不能做變形動畫的。就拿座標動畫來說,使用CSS3的transform做translateXY動畫比js中的position left,position right快了近700mm!而且視覺上也比js動畫流暢很多。

3. CSS3其它常規動畫屬性的效率均低於js類比的動畫

常規動畫屬性在這裡是指:height,width,opacity,border-width,color
每在頁面執行一次動畫時,都應該帶有至少兩個事件animationStart和animationEnd有的可能還需要 animationDuration,在手機上我們不推薦animationDuration,本來效率就已經非常低了,盡量不要在動畫執行期間還做其它的事件。用js類比動畫,需要開發人員編寫這些動畫事件的介面,以便更好的做下一步的工作,而CSS3動畫不需要開發人員編寫這些事件介面,瀏覽器本身就已經提供了, 拿webkit核心的瀏覽器舉例,它提供了 webkitTransitionStart,webkitTransitionEnd,webkitAnimationStart,webkitAnimationDuration,webkitAnimationEnd 事件介面,開發人員可以很方便的使用這些事件。

採用js動畫還是css3動畫,需要開發人員根據不同的需求做出不同的抉擇,但應該遵循一個基本的原則是:如果你需要做2D動畫,請勿必使用CSS3的transition或animation

前端最佳化之動畫為什麼要盡量用css3代替js

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

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.