您好,登錄后才能下訂單哦!
瀏覽器渲染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-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,因為前者會引起重繪而后者會引起回流。
不要把DOM節(jié)點作為循環(huán)變量使用。
不要使用table布局,table基本都是回流。
動畫實現(xiàn)的速度越快,回流次數越多。
CSS選擇符從右向左匹配查找,避免節(jié)點層級過多。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。