搜尋
首頁web前端css教學關於CSS3開啟硬體加速的使用與陷阱

這篇文章主要介紹了詳解CSS3開啟硬體加速的使用和坑,內容挺不錯的,現在分享給大家,也給大家做個參考。

最近在看在github上看iscroll的文件。雖然是英文的,但是為了裝逼,沒辦法硬著頭皮看完了,覺得作者寫得不錯(我有那麼好耐心寫那麼長的文檔就好了[摀臉]),然後為了更好地裝逼,有看了一遍,其中是發現了不少好東西的,比如說CCS3硬體加速就是在上面被我擴展出來的。為了大家可以一起愉快地玩耍,我就先附上iscroll的Github Link:https://github.com/issaxite/iscroll

開啟CSS3加速

#平常我們寫的css3動畫(沒有觸發硬體加速的)都是使用瀏覽器緩慢的軟體渲染引擎來執行,字面上就是沒有開啟硬體加速。例如有時候寫的行動裝置網頁的動畫(例如最簡單的模態框)在安卓手機上會出現卡片幀的現象,有很大可能就是使用瀏覽器軟體渲染引擎來執行,效能跟不上導致的。上面說到硬體加速就可以解決這個問題,性能跟不上嘛,那就Spider Man上(能力越大,責任越大)——來硬體加速,性能提上去呀(我知道這又是一個爛gag ),其實所謂硬體加速就是告訴瀏覽器,讓它使用GPU進行渲染,切換到GPU模式,發揮GPU的一系列功能。

舉例:

CSS的  animations,  transforms 以及 transitions 不會自動開啟GPU加速,而是由瀏覽器的緩慢的軟體渲染引擎來執行。為了效能,這個時候或許你就需要開啟硬體加速功能。那我們怎麼可以切換到GPU模式呢,很多瀏覽器提供了某些觸發的CSS規則。

Chrome, FireFox, Safari, IE9 和最新版本的Opera都支援硬體加速,當它們偵測到頁面中某個DOM元素應用了某些CSS規則時就會開啟,最顯著的特徵的元素的3D變換。

在其他的文章上看到的幾個可以切換到GPU模式的幾個3d屬性:

.isaax{
   -webkit-transform: translate3d(250px,250px,250px)
   rotate3d(250px,250px,250px,-120deg)
   scale3d(0.5, 0.5, 0.5);
}

在iscroll的文檔上看到的是下面這個:

.isaax {
   -webkit-transform: translateZ(0);
   -moz-transform: translateZ(0);
   -ms-transform: translateZ(0);
   -o-transform: translateZ(0);
   transform: translateZ(0);
}

據說使用以上樣式觸發硬體加速後會出現「頁面可能會出現閃爍的效果「 的問題,我是還沒發現,在網路上是找到兩個可以解決的方法:

方法一

.isaax {
   -webkit-backface-visibility: hidden;
   -moz-backface-visibility: hidden;
   -ms-backface-visibility: hidden;
   backface-visibility: hidden;
 
   -webkit-perspective: 1000;
   -moz-perspective: 1000;
   -ms-perspective: 1000;
   perspective: 1000;
}
  • backface-visibility (ie10 )是用來隱藏被旋轉元素的背面,translateZ 導致的? ;

  • 而當為元素定義 perspective 屬性時,其子元素會得到透視效果。

換言之,不是去掉閃爍,而是設為透明[技術太渣根本不敢說話]

方法二

#如果是webkit內核,還有一種方式可以解決:

.isaax {
   -webkit-transform: translate3d(0, 0, 0);
   -moz-transform: translate3d(0, 0, 0);
   -ms-transform: translate3d(0, 0, 0);
   transform: translate3d(0, 0, 0);
}

硬體加速的坑

看了大神的文章才知道,握草,這東西也不是萬金油啊,用得不好,狠起來你那女票還狠,看了打開大神的例子又再次感受到深深的惡意。頭部的那個輪播動畫元素的存在居然會導致下面所有相對和絕對定位的元素都被放到複合層中。 。 。

然後說一下怎麼打開查看【複合層】元素選項的方式,好像上面文章提到的方法有點過時:

打開控制台

勾選Layer Borders選項,你會發現世界突然清晰了許多

最後,附上跳過坑的方法

使用3D硬體加速提升動畫效能時,最好給元素增加一個z-index屬性,人為幹擾複合層的排序,可以有效減少chrome創建不必要的複合層,提升渲染性能,移動端優化效果尤為明顯。

.isaax{
  position: relative;
  z-index: 1;  // 可以设大点,尽量设得比后面元素的z-index值高
}

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

關於開發CSS3彈性盒模型的方法之二

關於bootstrap3.0的柵格系統原理

#

以上是關於CSS3開啟硬體加速的使用與陷阱的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
什麼是CSS網格?什麼是CSS網格?Apr 30, 2025 pm 03:21 PM

CSS網格是創建複雜,響應式Web佈局的強大工具。它簡化了設計,提高可訪問性並提供了比舊方法更多的控制權。

什麼是CSS Flexbox?什麼是CSS Flexbox?Apr 30, 2025 pm 03:20 PM

文章討論了CSS FlexBox,這是一種佈局方法,用於有效地對齊和分佈響應設計中的空間。它說明了FlexBox用法,將其與CSS網格進行了比較,並詳細瀏覽了瀏覽器支持。

我們如何使用CSS使網站迅速響應?我們如何使用CSS使網站迅速響應?Apr 30, 2025 pm 03:19 PM

本文討論了使用CSS創建響應網站的技術,包括視口元標籤,靈活的網格,流體媒體,媒體查詢和相對單元。它還涵蓋了使用CSS網格和Flexbox一起使用,並推薦CSS框架

CSS盒裝屬性有什麼作用?CSS盒裝屬性有什麼作用?Apr 30, 2025 pm 03:18 PM

本文討論了CSS盒裝屬性,該屬性控制了元素維度的計算方式。它解釋了諸如Content-Box,Border-Box和Padding-Box之類的值,以及它們對佈局設計和形式對齊的影響。

我們如何使用CSS動畫?我們如何使用CSS動畫?Apr 30, 2025 pm 03:17 PM

文章討論使用CSS,關鍵屬性並與JavaScript結合創建動畫。主要問題是瀏覽器兼容性。

我們可以使用CSS向我們的項目添加3D轉換嗎?我們可以使用CSS向我們的項目添加3D轉換嗎?Apr 30, 2025 pm 03:16 PM

文章討論了Web項目的3D轉換,關鍵屬性,瀏覽器兼容性和性能注意事項的討論。 (角色計數:159)

我們如何在CSS中添加梯度?我們如何在CSS中添加梯度?Apr 30, 2025 pm 03:15 PM

文章討論了使用CSS梯度(線性,徑向,重複)來增強網站視覺效果,添加深度,焦點和現代美學。

CSS中的偽元素是什麼?CSS中的偽元素是什麼?Apr 30, 2025 pm 03:14 PM

文章討論了CSS中的偽元素,它們在增強HTML樣式方面的使用以及與偽級的差異。提供實用的例子。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

EditPlus 中文破解版

EditPlus 中文破解版

體積小,語法高亮,不支援程式碼提示功能

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。