回流跟重绘
一、 什么是重繪和回流
在 html 中,每個元素都可以理解成一個盒子,在瀏覽器解析過程中,會涉及到回流和重繪:
- ? 回流:布局引擎會根據各種樣式計算每個盒子在頁面上的大小與位置
- ? 重繪:當計算好盒子模型的位置、大小及其其他屬性后,瀏覽器根據每個盒子特性進行繪制
具體的瀏覽器解析渲染機制如下所示:
具體的瀏覽器解析渲染機制如下所示:
-
解析HTML,生成DOM樹,解析CSS,生成CSSOM樹
-
將DOM樹和CSSOM樹結合,生成渲染樹(Render Tree)
-
Layout(回流):根據生成的渲染樹,進行回流(Layout),得到節點的幾何信息(位置,大小)
-
Painting(重繪):根據渲染樹以及回流得到的幾何信息,得到節點的絕對像素
-
Display:將像素發送給GPU,展示在頁面上?
在頁面初始渲染階段,回流不可避免的觸發,可以理解成頁面一開始是空白的元素,后面添加了新的元素使頁面布局發生改變
當我們對?DOM?的修改引發了?DOM幾何尺寸的變化(比如修改元素的寬、高或隱藏元素等)時,瀏覽器需要重新計算元素的幾何屬性,然后再將計算的結果繪制出來
當我們對?DOM的修改導致了樣式的變化(color或background-color),卻并未影響其幾何屬性時,瀏覽器不需重新計算元素的幾何屬性、直接為該元素繪制新的樣式,這里就僅僅觸發了回流
二、??什么會引起回流
可以看出,回流一定伴隨著重繪,而重繪卻可以單獨出現
可以理解為,路人甲摔斷了腿或者抽脂之后,病怏怏導致頭發也變白了(回流+重繪);但是炮灰乙卻僅僅是去村口王師傅那里燙了頭(重繪)
回流對性能產生了一定的影響,盡管瀏覽器機智地幫我們進行了批處理,但是仍然存在著上述諸多闊怕的屬性,一獲取就回流。怎么解決?
三、 減少回流
補充:改變字體大小會引發回流
總結
- 上一篇: 2011 年11 月系统集成项目管理工程
- 下一篇: 梯度增强 Kriging 代理模型理论相