知道咱們能夠經過卸載CSS圖形特性到GPU(圖形處理單元)來硬件加速CSS的圖形特性,以得到在瀏覽器中的更好渲染效果嗎?web
現在大多數計算機都有適合顯卡的硬件加速功能。所以,咱們就能夠爲那些大功耗的利用GPU的能量,進而咱們的網站和應用能夠在CPU上的瀏覽器中運行得更快。瀏覽器
在這篇文章,咱們將 CSS 硬件加速應用在桌面和移動瀏覽器上。jsp
在桌面和手機瀏覽器上的CSS硬件加速性能
有沒有想過一些 CSS 動畫怎麼如此順利運行在瀏覽器中?動畫
CSS 動畫、 轉換和過渡並不會自動進行GPU 加速,取而代之從瀏覽器的較慢的渲染引擎執行。那麼怎麼精確地強制瀏覽器切換到 GPU 模式呢?許多瀏覽器都提供了經過某些 CSS 規則進行 GPU 加速。網站
目前,一些瀏覽器像Chrome、 火狐、 Safari、 IE9 + 和最新版本的歐鵬瀏覽器都配備了硬件加速功能;它們只是當有跡象代表一個DOM元素要使用它的時候纔會使用到。spa
例如:3d
在某些狀況下,您可能不但願 在元素上進行3D 轉換,可是仍然利用 GPU 加速。那時就可使用幾個簡單的 CSS 屬性,誘使瀏覽器觸發 GPU 加速。orm
即便咱們不在 3D 空間中建立動畫元素,咱們也能夠啓用 3D 渲染。至少,"transform:translateZ(0);"能夠宣稱觸發 GPU 加速在現代的桌面和移動瀏覽器中。這彷佛是最有效的觸發 GPU 加速的方法(包括全部的瀏覽器前綴):htm
在 Chrome 和 Safari中, 當咱們使用 CSS 轉換或動畫可能會看到閃爍的效果。下面的聲明能夠用於解決此問題:
另一種彷佛能夠解決Webkit引擎的桌面和移動瀏覽器問題的方式是使用translate3d:
本地移動應用程序也能利用設備的GPU加速——這就是爲何人們都知道它們表現的比Web應用程序更好。使用硬件加速在移動設備上尤爲有用,這是由於它能夠有效減小設備上的資源消耗。
咱們所涉及的方法應僅用於咱們正在進行動畫處理的元素。它們能夠提高在2D動畫上的表現,可是僅僅爲了硬件加速而把它們應用在全部的上面是不明智的。
當心地使用它們的每一種方式,而且只在須要體驗真正的表現性能的時候。沒必要要地使用 GPU 能夠致使重大的性能問題,由於它增長了內存的使用 — — — — 它也會影響在移動設備上的電池壽命。
你有沒有試過在項目中使用這些方法呢?若是有試過,請你們分享一下哪個是最有效和表現最好的。