重排和重繪
阿新 • • 發佈:2021-10-08
定義:
當DOM的變化引發了元素幾何屬性的變化,比如元素的寬高,元素的位置,導致瀏覽器不得不重新計算元素的幾何屬性,並重新構建渲染樹,這個過程稱為“重排”。完成重排後,要將構建的渲染樹渲染到螢幕上,這個過程稱為“重繪”。
簡單來說,重排負責元素的幾何屬性更新,重繪負責元素的樣式更新。並且,重排必然帶來重繪,但重繪未必帶來重排。比如,改變某個元素的背景,這個就不涉及元素的幾何屬性,所以只發生重繪。
觸發機制:
重排發生的根本原理就是元素的幾何屬性發生了改變,那麼我們就能從改變元素幾何屬性的角度入手。
- 新增或刪除可見的DOM元素
- 元素位置改變
- 元素本身尺寸發生改變
- 內容改變
- 頁面渲染初始化
- 瀏覽器視窗大小發生改變
最小化重繪和重排:
- 瀏覽器自動對重排進行優化,對改變的DOM節點進行依賴收集,確認沒有改變的節點,就進行一次更新。
- js程式碼優化。(主要包括:儘量減少、避免無意義的DOM操作;方案優化,用其他可行方法替代DOM操作;將多次dom操作收集到一塊,一次性執行多次DOM操作)