如題,給一個按鈕寫一個 css 心跳收縮動畫後,按鈕中的文字會上下抖動,解決方案為 will-change: transform;
程式碼如下:
// 按鍵呼吸特效使用 class="pulse" @keyframes pulse { 0%{ transform: scale(1); } 25%{ transform: scale(0.95); } 50%{ transform: scale(1); } 75%{ transform: scale(1.05); } 100%{ transform: scale(1); } } .pulse { animation: scale 1.2s infinite linear; transform-origin: center center; will-change: transform; }
will-change: transform;
是CSS中的一個屬性,用於告知瀏覽器該元素將進行哪些樣式的改變。
當一個元素的屬性值改變時,瀏覽器需要重新計算並渲染這個元素,這可能會導致頁面的重繪和重排,從而影響效能。使用 will-change
屬性可以提前告訴瀏覽器哪些屬性可能會發生變化,這樣瀏覽器就可以在變化發生之前進行最佳化,避免不必要的重繪和重排。
然而,需要注意的是,濫用will-change
屬性可能會導致效能問題,因為瀏覽器可能會花費資源去準備那些實際上並沒有發生的變化。因此,你應該只在確實知道某個屬性即將變化,並且這種變化對使用者體驗有重要影響的情況下使用它。
此外,一旦元素的變化完成,你應該移除will-change
宣告,以避免瀏覽器繼續為不必要的最佳化而消耗資源。
最後,雖然will-change
在某些情況下可能有助於提高效能,但它並不是解決所有效能問題的萬能藥。在最佳化頁面效能時,你還應該考慮其他因素,如減少重繪和重排、使用合適的動畫曲線、最佳化圖片和指令碼載入等。