分別使用了left和transform在2秒內(nèi)向右平移了500px的位移。代碼如下:
然后在chrome下得到了如下的結(jié)果,第一張為使用left的截圖,第二張為使用transform的截圖:
transform的截圖
顯而易見,我們在幀模式這里可以看到left比transform幀數(shù)要低,而且在渲染和繪制這邊的耗時,left要遠遠的大于transform。看到這里,相信大家心里已經(jīng)有結(jié)論了。
我們再利用chrome的show paint rectangles來觀察一下兩者在動畫過程中,渲染和繪制的區(qū)域有何差異,第一張為使用left的截圖,第二張為使用transform的截圖:
transform的截圖
我們可以看到,使用left寫的整個動畫過程中,瀏覽器一直在進行繪制處理。而相對而言,使用transform時,僅僅是在動畫開始和結(jié)束是進行了繪制。因此,對于動畫的性能上,transform要更為出色。至于原因,這里就要引入一個觸發(fā)重新布局的概念:
我們在改變一些屬性時,如果是跟layout相關(guān)的屬性,則會觸發(fā)重新布局,導(dǎo)致渲染和繪制所需要的時間將會更長。因此,我們在寫動畫的時候因該規(guī)避這些屬性:width, height, margin, padding, border, display, top, right, bottom ,left, position, float, overflow等。
不會出發(fā)重新布局的屬性有:transform(其中的translate, rotate, scale), color, background等。
所以,我們平時在寫css動畫時,應(yīng)該優(yōu)先使用不觸發(fā)重新布局的屬性,這樣可以使我們所展示動畫效果的更加流暢。
轉(zhuǎn)載請注明來自:攜程設(shè)計委員會
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com