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

關於CSS3開啟硬體加速的使用與陷阱

Jun 20, 2018 pm 02:58 PM

這篇文章主要介紹了詳解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

熱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

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1664
14
CakePHP 教程
1421
52
Laravel 教程
1315
25
PHP教程
1266
29
C# 教程
1239
24
Google字體可變字體 Google字體可變字體 Apr 09, 2025 am 10:42 AM

我看到Google字體推出了新設計(Tweet)。與上一次大型重新設計相比,這感覺更加迭代。我幾乎無法分辨出區別

如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 如何使用HTML,CSS和JavaScript創建動畫倒計時計時器 Apr 11, 2025 am 11:29 AM

您是否曾經在項目上需要一個倒計時計時器?對於這樣的東西,可以自然訪問插件,但實際上更多

HTML數據屬性指南 HTML數據屬性指南 Apr 11, 2025 am 11:50 AM

您想了解的有關HTML,CSS和JavaScript中數據屬性的所有信息。

使Sass更快的概念證明 使Sass更快的概念證明 Apr 16, 2025 am 10:38 AM

在一個新項目開始時,Sass彙編發生在眼睛的眨眼中。感覺很棒,尤其是當它與browsersync配對時,它重新加載

我們如何創建一個在SVG中生成格子呢模式的靜態站點 我們如何創建一個在SVG中生成格子呢模式的靜態站點 Apr 09, 2025 am 11:29 AM

格子呢是一塊圖案布,通常與蘇格蘭有關,尤其是他們時尚的蘇格蘭語。在Tar​​tanify.com上,我們收集了5,000多個格子呢

如何在WordPress主題中構建VUE組件 如何在WordPress主題中構建VUE組件 Apr 11, 2025 am 11:03 AM

內聯式模板指令使我們能夠將豐富的VUE組件構建為對現有WordPress標記的逐步增強。

php是A-OK用於模板 php是A-OK用於模板 Apr 11, 2025 am 11:04 AM

PHP模板通常會因促進Subpar代碼而變得不良說唱,但這並不是這樣的情況。讓我們看一下PHP項目如何執行基本的

靜態表單提供商的比較 靜態表單提供商的比較 Apr 16, 2025 am 11:20 AM

讓我們嘗試在這裡造成一個術語:“靜態表單提供商”。你帶上html

See all articles