關(guān)于瀏覽器的渲染機制忙厌,這應(yīng)該是每一個前端需要了解的一個很重要的知識點
這對于后面的web性能優(yōu)化有著至關(guān)重要的作用。
如圖:
1.首先瀏覽器解析html,生成一個dom樹循诉。
2.然后會解析css臭增,生成一個cssom樹懂酱。
3.根據(jù)解析的dom樹與cssom樹相匹配,生成一個渲染樹誊抛。
4.根據(jù)渲染樹進行頁面的布局(這里會計算每一個節(jié)點的幾何信息)列牺。
5.把各個解析的節(jié)點幾何信息繪制在頁面中,生成一個靜態(tài)頁面拗窃。
在頁面構(gòu)建渲染樹時昔园,引入的一些js腳本文件,js腳本控制一些節(jié)點的顯示和隱藏
包括顏色邊框等等并炮,這都需要返回以上的步驟來重新繪制默刚,js控制腳本會多次修改dom樹。
當用戶瀏覽網(wǎng)頁逃魄,通過js腳本來交互作用的時候荤西,這里dom樹可能會發(fā)生一些變化,這些操作的過程就叫repaint或者是reflow。
repaint
repaint:當頁面的元素通過js腳本交互邪锌,頁面元素發(fā)生改變勉躺,但是不會影響元素在頁面中的位置,瀏覽器僅僅會用新的樣式來重新繪制樣式觅丰。這些操作就屬于repaint饵溅。
reflow
reflow:當頁面元素通過js腳本交互,頁面元素發(fā)生改變妇萄,影響了元素在頁面中的位置(頁面元素位置的變化需要重新布局)蜕企,或者是文檔的結(jié)構(gòu)的變化。這個過程就是reflow冠句。