很多面試都會問到的問題,那麼說起這兩個概念,首先先了解一下,瀏覽器對乙個頁面對渲染過程。
1.使用者輸入url位址,瀏覽器根據網域名稱查詢ip位址
2.瀏覽器向伺服器傳送http請求
3.伺服器接受請求,根據請求返回相應的html**,返回給瀏覽器
4.瀏覽器接受到伺服器的相應結果,對頁面做解析渲染
1 ,根據伺服器返回的html編碼進行解析,構建相應的dom樹
2 ,載入css樣式,構建css樣式表
3 ,dom樹和樣式表結合形成 render tree
4 ,布局繪製,形成頁面
重繪:當頁面元素的顏色背景等css樣式發生改變,重新構造新外觀,不會影響頁面布局的過程就叫做重繪。
回流:當頁面元素的大小,布局等發生改變,瀏覽器會重新渲染頁面,這就被稱作為回流。回流可以理解為需要重新計算dom,對整個瀏覽器的開銷是非常大的,所以一般不建議採用這種方式,而是推薦通過新增class或者display:none等方式來重新設定css樣式。
重構不一定引起回流,回流必定產生重構。
回流與重繪
首先是html渲染過程 解析html並構建dom樹和cssom樹,瀏覽器對html標記轉換成文件物件模型,css標記則轉換成css物件模型 cssom dom 樹包含了所有的 html 標籤,包括不展示的 head 節點和 display none 的節點,而 cssom 樹則會去掉瀏覽器不能識別的...
重繪與回流
dom樹結構變化 新增或者刪除可見的dom元素 元素幾何屬性發生變化 頁面渲染初始化 獲取某些屬性 瀏覽器視窗發生變化,即 resize事件發生 啟用css偽類 hover 改變元素顏色 改變元素背景色 將改變樣式的操作集合在一次完成,直接改變classname或csstext 讓要操作的元素進行離...
重繪與回流
css外部檔案的引入要放到頭部,載入css的時候頁面渲染是被阻塞的,js也是會阻塞頁面渲染的,ui渲染和js引擎執行緒是互斥的,不是並行的,css的效能會讓js變慢,優化效能,layout painting。當render tree中的一部分 或全部 因為元素的規模尺寸,幾何屬性,布局,隱藏等改變而...