瀏覽器的重繪和重排

2021-10-20 20:45:32 字數 650 閱讀 4556

當渲染樹中的一些元素需要更新屬性,而這些屬性只是影響元素的外觀、風格,而不會影響布局的操作,比如 background-color,我們將這樣的操作稱為重繪。

當渲染樹中的一部分(或全部)因為元素的規模尺寸、布局、隱藏等改變而需要重新構建的操作,會影響到布局的操作,這樣的操作我們稱為重排。

任何會改變元素幾何資訊(元素的位置和尺寸大小)的操作,都會觸發重排。

(1)新增或者刪除可見的 dom 元素;

(2)元素尺寸改變——邊距、填充、邊框、寬度和高度

(3)內容變化,比如使用者在 input 框中輸入文字

(4)瀏覽器視窗尺寸改變——resize事件發生時

(5)計算 offsetwidth 和 offsetheight 屬性

(6)設定 style 屬性的值

(7)當你修改網頁的預設字型時。

重排必定會發生重繪,重繪不一定會引發重排。重排所需的成本比重繪高的多,改變父節點裡的子節點很可能會導致父節點的一系列重排。

瀏覽器的重繪與重排

在專案的互動或視覺評審中,前端同學常常會對一些互動效果質疑,提出這樣做不好那樣做不好。主要原因是這些效果通常會產生一系列的瀏覽器重繪 redraw 和重排 reflow 需要付出高昂的效能代價。那麼,什麼是瀏覽器的重繪和重排呢?二者何時發生以及如何權衡?如何在具體的開發過程中將重繪和重排引發的效能問...

瀏覽器的重繪與重排

在專案的互動或視覺評審中,前端同學常常會對一些互動效果質疑,提出這樣做不好那樣做不好。主要原因是這些效果通常會產生一系列的瀏覽器重繪 redraw 和重排 reflow 需要付出高昂的效能代價。那麼,什麼是瀏覽器的重繪和重排呢?二者何時發生以及如何權衡?如何在具體的開發過程 中將重繪和重排引發的效能...

瀏覽器的重繪與重排

在專案的互動或視覺評審中,前端同學常常會對一些互動效果質疑,提出這樣做不好那樣做不好。主要原因是這些效果通常會產生一系列的瀏覽器重繪 redraw 和重排 reflow 需要付出高昂的效能代價。那麼,什麼是瀏覽器的重繪和重排呢?二者何時發生以及如何權衡?如何在具體的開發過程中將重繪和重排引發的效能問...