Web面試常問回流reflow與重繪repaint原理及區(qū)別
瀏覽器的渲染機(jī)制
1.瀏覽器采用兩個(gè)引擎來處理頁面的工作, 不同的瀏覽器使用的渲染引擎不一樣
渲染引擎:
Chrom
和Safari使用"WebKit",
Firefor
使用"Geoko"
js引擎
2.瀏覽器會把html解析成 DOM樹, 把css解析成 CSSOM(CSS對象模型);
3.接著會把 DOM樹 和 CSSOM, 結(jié)合產(chǎn)生 render tree(渲染樹);
4.渲染樹完成后, 瀏覽器會根據(jù)渲染樹布局, 布局結(jié)束后會輸出一個(gè)"盒模型", 它會精確捕獲每個(gè)節(jié)點(diǎn)在視圖中的位置、尺寸, 并且所有測量值都會轉(zhuǎn)換為屏幕上的物理像素值; (這一步會產(chǎn)生 回流(reflow)
)
5.布局完成后, 瀏覽器會立即發(fā)出 paint stup 事件, 將渲染樹轉(zhuǎn)換為屏幕像素; (這一步會產(chǎn)生 重繪(repaint)
)
6.經(jīng)過以上步驟, 頁面將顯示在屏幕上.
注意 回流必將引起重繪, 而重繪不一定引起回流
回流 與 重繪
回流
概念:
當(dāng)渲染樹(render tree)中的部分或全部, 因?yàn)樵氐慕Y(jié)構(gòu)、尺寸、布局等改變時(shí), 瀏覽器重新渲染部分DOM或全部DOM的過程.
強(qiáng)調(diào)元素節(jié)點(diǎn)的位置、距離發(fā)生改變.
導(dǎo)致回流的操作:
- 瀏覽器窗口大小發(fā)生變化
- 內(nèi)容改變
- 添加或刪除節(jié)點(diǎn)
- 激活CSS偽類
- 等等…
重繪
概念:
當(dāng)頁面元素樣式改變, 而不影響它在文檔流中的位置, 瀏覽器只會將新的樣式賦予元素, 并進(jìn)行重新繪制操作.
強(qiáng)調(diào)元素節(jié)點(diǎn)的樣式, 例如顏色, 邊框?qū)嵕€變虛線(不改變位置、距離).
導(dǎo)致重繪的操作:
- background-color屬性值變化時(shí)
- border-color屬性值變化時(shí)
- visibility屬性值變化時(shí)
- 等等…
以上就是Web面試常問回流reflow與重繪repaint原理及區(qū)別的詳細(xì)內(nèi)容,更多關(guān)于Web面試回流reflow與重繪repaint的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
表單的焦點(diǎn)順序tabindex和對應(yīng)enter鍵提交
表單的焦點(diǎn)tab鍵順序:tabindex決定,如果值缺省,擇按順序一一對應(yīng),想詳細(xì)了解此功能應(yīng)用的朋友可以參考下2013-01-01JavaScript使用escape()、encodeURI()和decodeURI()實(shí)現(xiàn)URI編碼解碼
這篇文章介紹了JavaScript使用escape()、encodeURI()和decodeURI()實(shí)現(xiàn)URI編碼解碼的方法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-05-05JavaScript fontcolor方法入門實(shí)例(按照指定的顏色來顯示字符串)
這篇文章主要介紹了JavaScript fontcolor方法入門實(shí)例,fontcolor方法用于按照指定的顏色來顯示字符串,需要的朋友可以參考下2014-10-10淺析document.ready和window.onload的區(qū)別講解
這篇文章主要介紹了document.ready和window.onload的區(qū)別,有需要的朋友可以參考一下2013-12-12JavaScript中isPrototypeOf、instanceof和hasOwnProperty函數(shù)的用法詳解
本文詳細(xì)講解了JavaScript中isPrototypeOf、instanceof和hasOwnProperty函數(shù)的用法,文中通過示例代碼介紹的非常詳細(xì)。對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-06-06JavaScript onkeydown事件入門實(shí)例(鍵盤某個(gè)按鍵被按下)
這篇文章主要介紹了JavaScript onkeydown事件入門實(shí)例,onkeydown事件捕捉鍵盤上某個(gè)按鍵被按下的情況,需要的朋友可以參考下2014-10-10實(shí)例:用 JavaScript 來操作字符串(一些字符串函數(shù))
實(shí)例:用 JavaScript 來操作字符串(一些字符串函數(shù))...2007-02-02