瀏覽器渲染html頁(yè)面的流程基本上分為四步:
1、計(jì)算CSS樣式
2、構(gòu)建Render Tree
3、Layout 定位坐標(biāo)和大小
4、正式開(kāi)始渲染
那么,首先要提出兩個(gè)重要概念,一個(gè)是Relfow,一個(gè)是Repaint。
重繪:當(dāng)我們對(duì)DOM的修改導(dǎo)致了樣式變化,也就是說(shuō)DOM的CSS樣式發(fā)生改變,但是幾何屬性并沒(méi)有改變,比如只是修改了DOM的顏色、背景色時(shí),瀏覽器不需要重新計(jì)算元素的幾何屬性,直接為該元素繪制新的樣式。
回流:當(dāng)我們對(duì)DOM的修改改變了DOM的幾何尺寸,比如修改了元素的寬、高或隱藏元素等,那么瀏覽器需要重新計(jì)算元素的幾何屬性;因?yàn)樵撛叵噜徳氐膸缀螌傩院臀恢枚紩?huì)受到影響。然后再將計(jì)算的結(jié)果重新繪制出來(lái),這個(gè)過(guò)程稱(chēng)為回流。
我們知道,網(wǎng)頁(yè)生成的時(shí)候,至少會(huì)渲染一次。刷新和回退都會(huì)不斷的重新渲染,每次的重新渲染必然會(huì)引發(fā)回流+重繪,有時(shí)候只是重繪。
回流必然引發(fā)重繪,但是重繪則不一定會(huì)引起回流。
如果重回和回流在設(shè)置節(jié)點(diǎn)時(shí)頻發(fā)出現(xiàn),那么很大程度上影響頁(yè)面的性能?;亓魉璧某杀颈戎乩L高的多,改變父節(jié)點(diǎn)里的子節(jié)點(diǎn),會(huì)導(dǎo)致父節(jié)點(diǎn)的一系列回流。
常見(jiàn)引起回流的屬性和方法
1、添加或者刪除可見(jiàn)的DOM元素;
2、元素尺寸的改變,margin、padding、border、width、height
3、內(nèi)容變化,比如用戶(hù)在input框中輸入文字
4、瀏覽器窗口尺寸的改變——resize事件發(fā)生時(shí)
5、計(jì)算offsetWidth 或者offsetLeft屬性
6、設(shè)置style的屬性值
常見(jiàn)引起重繪的屬性和方法
color、border-style、visibility、background、background-image、background-size、background-position、background-repeat、border-radius、box-shadow、outline、outline-color、outline-style、outline-width
如何減少回流、重繪
使用transform代替top、使用visibility代替display:none,因?yàn)榍罢邥?huì)引起重繪而后者會(huì)引起回流。
不要把DOM節(jié)點(diǎn)作為循環(huán)變量使用。
不要使用table布局,table基本都是回流。
動(dòng)畫(huà)實(shí)現(xiàn)的速度越快,回流次數(shù)越多。
CSS選擇符從右向左匹配查找,避免節(jié)點(diǎn)層級(jí)過(guò)多。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線(xiàn),公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性?xún)r(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專(zhuān)為企業(yè)上云打造定制,能夠滿(mǎn)足用戶(hù)豐富、多元化的應(yīng)用場(chǎng)景需求。
新聞名稱(chēng):瀏覽器渲染的回流和重繪-創(chuàng)新互聯(lián)
URL標(biāo)題:http://muchs.cn/article0/csjgio.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護(hù)、App開(kāi)發(fā)、云服務(wù)器、定制網(wǎng)站、域名注冊(cè)、靜態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容
移動(dòng)網(wǎng)站建設(shè)知識(shí)