久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

您的位置:首頁技術(shù)文章
文章詳情頁

利用css3 translate來代替?zhèn)鹘y(tǒng)的修改left和top實現(xiàn)動畫,觸發(fā)webkit的GPU加速渲染功能實現(xiàn)流暢的動畫效果

瀏覽:122日期:2023-08-08 10:03:53

問題描述

這里有什么特殊意義么,是不是完全可以用translateX()代替translate3d()啊?

利用css3 translate來代替?zhèn)鹘y(tǒng)的修改left和top實現(xiàn)動畫,觸發(fā)webkit的GPU加速渲染功能實現(xiàn)流暢的動畫效果

問題解答

回答1:

增加http://www.infoq.com/cn/artic...文章比較長,而且沒看懂,摘一段

...但我的第一猜測這么做的原因是為了使用translate3d hack。簡單來說如果你給一個元素添加上了-webkit-transform: translateZ(0);或者-webkit-transform: translate3d(0,0,0);屬性,那么你就等于告訴了瀏覽器用GPU來渲染該層,與一般的CPU渲染相比,提升了速度和性能。(我很確定這么做會在Chrome中啟用了硬件加速,但在其他平臺不做保證。就我得到的資料而言,在大多數(shù)瀏覽器比如Firefox、Safari也是適用的)。

但這樣的說法其實并不準(zhǔn)確,至少在現(xiàn)在的Chrome版本中這算不上一個hack。因為默認(rèn)渲染所有的網(wǎng)頁時都會經(jīng)過GPU。那么這么做還有必要嗎?有。在理解原理之前,你必須先了解一個層(Layer)的概念。

html在瀏覽器中會被轉(zhuǎn)化為DOM樹,DOM樹的每一個節(jié)點都會轉(zhuǎn)化為RenderObject, 多個RenderObject可能又會對應(yīng)一個或多個RenderLayer。瀏覽器渲染的流程如下:

獲取 DOM 并將其分割為多個層(RenderLayer)

將每個層?xùn)鸥窕ⅹ毩⒌睦L制進(jìn)位圖中

將這些位圖作為紋理上傳至 GPU

復(fù)合多個層來生成最終的屏幕圖像(終極layer)。

這和游戲中的3D渲染類似,雖然我們看到的是一個立體的人物,但這個人物的皮膚是由不同的圖片“貼”和“拼”上去的。網(wǎng)頁比此還多了一個步驟,雖然最終的網(wǎng)頁是由多個位圖層合成的,但我們看到的只是一個復(fù)印版,最終只有一個層。當(dāng)然有的層是無法拼合的,比如flash。

2014-6-24 11:04:16

@bobscript @f2e

開啟3dGPU加速。

效果一樣,不過后者會觸發(fā)瀏覽器的硬件加速。這篇文章有詳解:http://cubefe.com/ipad_web_gp...

在支持css3的瀏覽器上開發(fā)js動畫還是比較輕松方便的。一般來說利用css3 translate來代替?zhèn)鹘y(tǒng)的修改left和top實現(xiàn)動畫,某些情況下能會更好一點。具體原因是能夠減少瀏覽器repait量。經(jīng)過實踐發(fā)現(xiàn)translate方法和left,top方法性能上相差無幾,都是很差的,全屏的動畫repait量無論如何都無法減小。

經(jīng)過調(diào)研發(fā)現(xiàn)這種情況可以利用webkit的gpu加速渲染功能實現(xiàn)流暢的動畫效果,理論。簡單說下開啟gpu加速的一些方法:1,html5 video,bing首頁動態(tài)背景使用video的原因之一吧。2,transition 和 animation(在ipad上使用會開啟gpu加速)。3,-webkit-transform-style:preserve-3d; -webkit-transform: translate3d(0,0,0); 。4,給元素transform加上translateZ(0px),iScroll采用的方法。按照上述方法開啟gpu加速后,涉及到的區(qū)域就會被gpu直接渲染在屏幕對應(yīng)區(qū)域,不用和瀏覽器進(jìn)程共享內(nèi)存和減輕cpu負(fù)擔(dān)是gpu加速的理論原理。帶來的問題:同時開啟gpu加速后也會帶來一些額外的問題,首要的應(yīng)該是設(shè)備耗電量會增加,畢竟gpu也開始工作了。其次會出現(xiàn)一些渲染上面的問題,例如被加速部分元素z-index值和未被加速部分之間將無法正常比較。被加速元素如果有position定位的子元素,這些子元素有可能無法渲染到被加速元素以外的區(qū)域——left設(shè)置成-10000px都會渲染成0px。pc上有些顯卡還會出現(xiàn)渲染bug,好在ipad上沒這個問題。

標(biāo)簽: CSS
主站蜘蛛池模板: 通江县| 连南| 茂名市| 建始县| 博湖县| 牡丹江市| 亳州市| 孙吴县| 郸城县| 铜鼓县| 女性| 拜泉县| 和田市| 阆中市| 政和县| 阳曲县| 理塘县| 湟源县| 南平市| 普定县| 涞水县| 安龙县| 阿瓦提县| 上饶县| 沾化县| 岳池县| 大足县| 深泽县| 吴江市| 安徽省| 舞钢市| 安庆市| 宝山区| 通化市| 隆尧县| 宁河县| 兴和县| 军事| 岐山县| 长寿区| 普陀区|