摘要:給變化的制作動(dòng)畫會(huì)大大縮減頁面渲染的性能。盡量的減少重繪的次數(shù),可以保證你的動(dòng)畫能夠保證在左右通過改變子元素的透明度。為什么會(huì)有這樣的結(jié)果只有很少的屬性才能避免在動(dòng)畫的過程不斷的重繪,像和。
原文地址:http://tobiasahlin.com/blog/how-to-animate-box-shadow/
如何才能防止在給 box-shadow 制作動(dòng)畫過渡時(shí)導(dǎo)致的每一幀都要進(jìn)行的重繪(re-paint),從而提高頁面的性能?
答案就是:不可能。給變化的 box-shadow 制作動(dòng)畫會(huì)大大縮減頁面渲染的性能。
但是,這里依然有類似的方法實(shí)現(xiàn)相同的效果。盡量的減少重繪的次數(shù),可以保證你的動(dòng)畫能夠保證在 60 FPS 左右:通過改變子元素的 opacity 透明度。
Demo查看這個(gè)Demo,比較一下兩種實(shí)現(xiàn)方式的不同。左邊的動(dòng)畫是在 box-shadow 的 :hover 狀態(tài)時(shí)執(zhí)行 box-shadow 動(dòng)畫, 而右邊的實(shí)現(xiàn)方式中,我們通過 :after 添加了一個(gè)偽元素,并給它添加了 box-shadow, 然后通過執(zhí)行 opacity 動(dòng)畫來是實(shí)現(xiàn)相同的效果。
如果你打開你的調(diào)試工具,可以看到下面類似的結(jié)果(綠色部分表示繪制;越少越好):
很明顯如果我們直接執(zhí)行 box-shadow 的動(dòng)畫會(huì)導(dǎo)致更多的重繪。
為什么會(huì)有這樣的結(jié)果? 只有很少的屬性 才能避免在動(dòng)畫的過程不斷的重繪,像 opacity 和 transform。
這就是兩種方式的不同之處,下面是核心代碼:
/* The slow way */ .make-it-slow { box-shadow: 0 1px 2px rgba(0,0,0,0.15); transition: box-shadow 0.3s ease-in-out: } /* Transition to a bigger shadow on hover */ .make-it-slow:hover { box-shadow: 0 5px 15px rgba(0,0,0,0.3); } /* The fast way */ .make-it-fast { box-shadow: 0 1px 2px rgba(0,0,0,0.15); } /* Pre-render the bigger shadow, but hide it */ .make-it-fast:after { box-shadow: 0 5px 15px rgba(0,0,0,0.3); opacity: 0; transition: opacity 0.3s ease-in-out: } /* Transition to showing the bigger shadow on hover */ .make-it-fast:hover:after { opacity: 1; }
在上面的例子中,高效的實(shí)現(xiàn)方式有兩層:一層負(fù)責(zé)呈現(xiàn)盒子,一層負(fù)責(zé)盒子陰影的過度動(dòng)畫,只對(duì)陰影的 opcity 執(zhí)行動(dòng)畫。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/111230.html
摘要:水平偏移水平偏移控制了盒子陰影在軸的偏移。同時(shí),因?yàn)槭秦?fù)值,所以向上移動(dòng)。如果是負(fù)值,則會(huì)在各個(gè)方向上收縮。值得注意的是,因?yàn)樗臄U(kuò)展距離是正,所以會(huì)在各個(gè)方向上增加因?yàn)闆]有水平和垂直偏移。它可以通過任何可以表示顏色的方式來表示顏色。 原文:A Close Look at CSS Box Shadow CSS的box-shadow可以被用來給塊級(jí)元素一個(gè)外陰影或者是內(nèi)陰影。接下來讓我們...
摘要:水平偏移水平偏移控制了盒子陰影在軸的偏移。同時(shí),因?yàn)槭秦?fù)值,所以向上移動(dòng)。如果是負(fù)值,則會(huì)在各個(gè)方向上收縮。值得注意的是,因?yàn)樗臄U(kuò)展距離是正,所以會(huì)在各個(gè)方向上增加因?yàn)闆]有水平和垂直偏移。它可以通過任何可以表示顏色的方式來表示顏色。 原文:A Close Look at CSS Box Shadow CSS的box-shadow可以被用來給塊級(jí)元素一個(gè)外陰影或者是內(nèi)陰影。接下來讓我們...
摘要:然而通過自定義貝塞爾曲線的值,可以滿足你具體的動(dòng)畫時(shí)間需求。關(guān)于如何使用貝塞爾曲線的方法我們可以通過查看的開發(fā)者網(wǎng)站動(dòng)畫延時(shí)動(dòng)畫延時(shí)常常應(yīng)用于當(dāng)我們需要對(duì)動(dòng)畫進(jìn)行的延時(shí)操作的時(shí)候。從而減少大部分動(dòng)畫執(zhí)行期間潛在的性能損耗問題。 注:原文有較大改動(dòng) 使用 keyframes, animation屬性,例如timing, delay, play state, animation-coun...
摘要:然而通過自定義貝塞爾曲線的值,可以滿足你具體的動(dòng)畫時(shí)間需求。關(guān)于如何使用貝塞爾曲線的方法我們可以通過查看的開發(fā)者網(wǎng)站動(dòng)畫延時(shí)動(dòng)畫延時(shí)常常應(yīng)用于當(dāng)我們需要對(duì)動(dòng)畫進(jìn)行的延時(shí)操作的時(shí)候。從而減少大部分動(dòng)畫執(zhí)行期間潛在的性能損耗問題。 注:原文有較大改動(dòng) 使用 keyframes, animation屬性,例如timing, delay, play state, animation-coun...
閱讀 1766·2021-11-24 09:39
閱讀 1691·2021-11-22 15:22
閱讀 1014·2021-09-27 13:36
閱讀 3263·2021-09-24 10:34
閱讀 3343·2021-07-26 23:38
閱讀 2638·2019-08-29 16:44
閱讀 981·2019-08-29 16:39
閱讀 1112·2019-08-29 16:20