揭秘CSS屬性選擇對動畫效能的影響

2021-07-29 19:10:24 字數 1212 閱讀 3788

本次的目的簡單粗暴地講,其實就是我們應該使用什麼css屬性去進行動畫的繪製時,能夠有效的提高瀏覽器在渲染和繪製過程中的效能。

快速進入主題,大家先來看個demo。我分別使用了left和transform在2秒內向右平移了500px的位移。**如下:

然後在chrome下得到了如下的結果,第一張為使用left的截圖,第二張為使用transform的截圖:

顯而易見,我們在幀模式這裡可以看到left比transform幀數要低,而且在渲染和繪製這邊的耗時,left要遠遠的大於transform。看到這裡,相信大家心裡已經有結論了。

我們再利用chrome的show paint rectangles來觀察一下兩者在動畫過程中,渲染和繪製的區域有何差異,第一張為使用left的截圖,第二張為使用transform的截圖:

我們可以看到,使用left寫的整個動畫過程中,瀏覽器一直在進行繪製處理。而相對而言,使用transform時,僅僅是在動畫開始和結束是進行了繪製。因此,對於動畫的效能上,transform要更為出色。至於原因,這裡就要引入乙個觸發重新布局的概念:

我們在改變一些屬性時,如果是跟layout相關的屬性,則會觸發重新布局,導致渲染和繪製所需要的時間將會更長。因此,我們在寫動畫的時候因該規避這些屬性:width, height, margin, padding, border, display, top, right, bottom ,left, position, float, overflow等。

不會出發重新布局的屬性有:transform(其中的translate, rotate, scale), color, background等。

所以,我們平時在寫css動畫時,應該優先使用不觸發重新布局的屬性,這樣可以使我們所展示動畫效果的更加流暢。

css的動畫屬性有哪些

首先我們要 css3中的動畫屬性 首先我們區分好transition 和 animation的區別 transition需要事件進行觸發 而animation 不需要事件觸發,呼叫關鍵幀即可。如何建立乙個動畫 首先我們在css樣式中先制定關鍵幀 解析 首先form是開始狀態,to到結束狀態 之後我們...

css3的動畫屬性

通過 css3,我們能夠建立動畫,這可以在許多網頁中取代動畫。關鍵幀的定義 不同於過渡動畫只能定義首尾兩個狀態,關鍵幀動畫可以定義多個狀態,或者用關鍵幀的話來說,過渡動畫只能定義第一幀和最後一幀這兩個關鍵幀,而關鍵幀動畫則可以定義任意多的關鍵幀,因而能實現更複雜的動畫效果。製作css3動畫首頁需要的...

css3的動畫屬性

一 css3的過渡屬性 1,transition property 檢索或設定物件中的參與過渡的屬性。2,transition duration 檢索或設定物件過渡的時間。3,transition delay 檢索或設定物件延遲過渡的時間。4,transition timing function 檢...