首頁 >web前端 >css教學 >css實現動畫效能優化

css實現動畫效能優化

王林
王林轉載
2020-04-02 09:12:342989瀏覽

css實現動畫效能優化

一、使用css,jquery,canvas製作動畫

#1、Canvas

優點:效能好,強大,支援多數瀏覽器(除了IE6、IE7、IE8),畫出來的圖形可以直接儲存為.png 或.jpg的圖形;

缺點:依賴HTML,只能透過腳本繪製圖形,沒有實現動畫的API(依賴事件和定時器更新);由於在canvas 上以程式設計方式顯示的文字其實就是點陣圖,因此搜尋爬行器將完全忽略文字。文字內容也無法被螢幕閱讀器辨識。

2、css3

優點:簡單且與內容分離、css動畫不觸發layout和paint;(這些屬性的修改不會觸發layout和paint:backface-visibility、opacity、perspective 、perspective-origin、transform);

缺點:有瀏覽器相容性問題、安卓手機會出現卡頓、受排版引擎的限制,與整個頁面的dom結構息息相關。

3、JQuery

優點:沒有相容性問題

缺點:每一幀,都要進行repaint、recomposite(非常耗時);

總結:在行動端動畫效果上,使用css3動畫要比jquery動畫效率高的多。在安卓手機上表現尤其明顯!所以行動端動畫以css3動畫為優先,jquery只能用來簡單處理應用邏輯。 css3動畫是用來為內容佈局加上特效的通用解決方案,但是在效能堪憂的行動瀏覽器上很可能會受排版效能所限,達不到理想的效果。而對效能有要求的特定場景,例如遊戲,用canvas會有很大的提升。

(推薦教學:CSS入門教學

二、css3在行動端出現卡頓問題

css3製作的動畫在ios上跑的66的,但是在安卓上有時會出現卡頓現象。不妨從下面幾點找問題。

a、是否導致layout

如果是,盡可能將動畫元素absolute或fixed化以避免影響文件樹,以減少重排.

b、是否啟用硬體加速

「用到了CSS3動畫」和「開啟了硬體加速」是兩件事情,雖然前者有可能導致後者。
開啟硬體加速在webkit中有神奇的萬金油:opacity: 1;或-webkit-backface-visibility: hidden;。

c、是否有高消耗的屬性(css shadow、gradients、background-attachment: fixed等)

有的話,圖片也是一種選擇。這算是用空間換時間的優化了。

d、repaint的面積

如果是,只好縮小動畫面積了。這一步驟的最佳化有限;

e、盡量使用 transform 產生動畫,避免使用 height,width,margin,padding 等;如以下範例1、範例2。

PS:使用 transform,瀏覽器只需要一次產生這個元素的點陣圖,並在動畫開始的時候將它提交給 GPU 去處理 。之後,瀏覽器不需要再做任何佈局、 繪製以及提交點陣圖的操作。從而,瀏覽器可以充分利用 GPU 的專長快速地將點陣圖繪製在不同的位置、執行旋轉或縮放處理。簡而言之,transform 動畫由GPU控制,支援硬體加速,並不需要軟體方面的渲染

三、動畫過程有閃爍(一般出現在動畫開始)

解決方法:

.cube {
 
   -webkit-backface-visibility: hidden;
 
   -moz-backface-visibility: hidden;
 
   -ms-backface-visibility: hidden;
 
   backface-visibility: hidden;
 
   -webkit-perspective: 1000;
 
   -moz-perspective: 1000;
 
   -ms-perspective: 1000;
 
   perspective: 1000;
 
   /* Other transform properties here */
 
}

在webkit核心的瀏覽器中,另一個行之有效的方法是:

.cube {
 
   -webkit-transform: translate3d(0, 0, 0);
 
   -moz-transform: translate3d(0, 0, 0);
 
   -ms-transform: translate3d(0, 0, 0);
 
   transform: translate3d(0, 0, 0);
 
  /* Other transform properties here */
 
}

相關影片教學推薦:css影片教學

以上是css實現動畫效能優化的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:jb51.net。如有侵權,請聯絡admin@php.cn刪除