溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

瀏覽器渲染的回流和重繪

發(fā)布時間:2020-09-28 12:50:35 來源:網絡 閱讀:495 作者:尼羲 欄目:web開發(fā)

瀏覽器渲染html頁面的流程基本上分為四步:

1、計算CSS樣式
2、構建Render Tree
3、Layout 定位坐標和大小
4、正式開始渲染

那么,首先要提出兩個重要概念,一個是Relfow,一個是Repaint。


重繪:當我們對DOM的修改導致了樣式變化,也就是說DOM的CSS樣式發(fā)生改變,但是幾何屬性并沒有改變,比如只是修改了DOM的顏色、背景色時,瀏覽器不需要重新計算元素的幾何屬性,直接為該元素繪制新的樣式。


回流:當我們對DOM的修改改變了DOM的幾何尺寸,比如修改了元素的寬、高或隱藏元素等,那么瀏覽器需要重新計算元素的幾何屬性;因為該元素相鄰元素的幾何屬性和位置都會受到影響。然后再將計算的結果重新繪制出來,這個過程稱為回流。


我們知道,網頁生成的時候,至少會渲染一次。刷新和回退都會不斷的重新渲染,每次的重新渲染必然會引發(fā)回流+重繪,有時候只是重繪。


回流必然引發(fā)重繪,但是重繪則不一定會引起回流。


如果重回和回流在設置節(jié)點時頻發(fā)出現(xiàn),那么很大程度上影響頁面的性能?;亓魉璧某杀颈戎乩L高的多,改變父節(jié)點里的子節(jié)點,會導致父節(jié)點的一系列回流。


常見引起回流的屬性和方法


1、添加或者刪除可見的DOM元素;


2、元素尺寸的改變,margin、padding、border、width、height


3、內容變化,比如用戶在input框中輸入文字


4、瀏覽器窗口尺寸的改變——resize事件發(fā)生時


5、計算offsetWidth 或者offsetLeft屬性


6、設置style的屬性值


常見引起重繪的屬性和方法


color、border-stylevisibility、background、background-imagebackground-sizebackground-position、background-repeat、border-radiusbox-shadow、outlineoutline-color、outline-style、outline-width


如何減少回流、重繪


使用transform代替top、使用visibility代替display:none,因為前者會引起重繪而后者會引起回流。


不要把DOM節(jié)點作為循環(huán)變量使用。


不要使用table布局,table基本都是回流。


動畫實現(xiàn)的速度越快,回流次數越多。


CSS選擇符從右向左匹配查找,避免節(jié)點層級過多。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI