重排 reflow 和重繪 repaint

2021-09-03 06:58:11 字數 1100 閱讀 8819

什麼是重排:

引起dom樹重新計算的行為。

什麼時候會發生重排:

新增或刪除可見的dom元素

元素的位置改變

元素的尺寸大小改變

元素的內容改變

頁面渲染初始化

瀏覽器視窗尺寸改變

什麼是重繪:

元素可見的外觀被改變,但並沒有影響到布局

什麼時候會發生重繪:

dom元素的字型顏色、改變visibility、outline、背景色。

重繪不會帶來dom元素的重新計算,所以並不一定伴隨重排,但是重排一定會引起瀏覽器的重繪。

如何減少重排或重繪

1.合併多次dom操作為單次dom操作

element.style.bordercolor=

"pink"

;element.style.borderstyle=

"solid"

;element.style.borderwidth=

"1px"

;//優化

element.style.csstext+=

"border: 1px solid pink"

;

2.把dom元素離線或隱藏後修改

1)使用文件片段

var fragment=document.

createdocumentfragment()

;

2)通過設定dom元素的display樣式為none來隱藏元素

element.style.display='none';

//一些基本的操作

element.style.diaplay='block';

3)設定具有動畫效果的dom元素的position屬性為fixed或absolute,這樣元素脫離了文件流,它的變化就不會影響到其他的元素。

4)謹慎取得dom元素的布局資訊

盡量不要在布局資訊改變時做查詢,否則會導致渲染佇列的強制重新整理。

重排(reflow) 重繪(repaint)

重排 重構 回流 reflow 當渲染樹中的一部分 或全部 因為元素的規模尺寸,布局,隱藏顯示等改變而需要重新構建,這就稱為回流 reflow 每個頁面至少需要一次回流,就是在頁面第一次載入的時候。重繪 repaint 當盒子的位置 大小以及其他屬性,例如顏色 字型大小等都確定下來之後,瀏覽器便把這...

網頁的重排 reflow 與重繪 repaint

當頁面布局和幾何屬性改變時就會發生 重排 下述情況中會傳送重排 由於每次重排都會產生計算消耗,大多數瀏覽器通過佇列化修改並批量執行來優化重排過程。獲取布局資訊的操作會導致佇列重新整理 offsettop offsetleft offsetwidth offsetheight scrolltop sc...

重繪和重排

重繪是乙個元素外觀的改變所觸發的瀏覽器行為,例如改變visibility outline 背景色等屬性。瀏覽器會根據元素的新屬性重新繪製,使元素呈現新的外觀。重繪不會帶來重新布局,並不一定伴隨重排。重排是更明顯的一種改變,可以理解為渲染樹需要重新計算 儘量減少重排次數和縮小重排的影響範圍 1.dom...