1. 程式人生 > 其它 >重排和重繪

重排和重繪

定義:

  當DOM的變化引發了元素幾何屬性的變化,比如元素的寬高,元素的位置,導致瀏覽器不得不重新計算元素的幾何屬性,並重新構建渲染樹,這個過程稱為“重排”。完成重排後,要將構建的渲染樹渲染到螢幕上,這個過程稱為“重繪”。

  簡單來說,重排負責元素的幾何屬性更新,重繪負責元素的樣式更新。並且,重排必然帶來重繪,但重繪未必帶來重排。比如,改變某個元素的背景,這個就不涉及元素的幾何屬性,所以只發生重繪。

觸發機制:

  重排發生的根本原理就是元素的幾何屬性發生了改變,那麼我們就能從改變元素幾何屬性的角度入手。

  1. 新增或刪除可見的DOM元素
  2. 元素位置改變
  3. 元素本身尺寸發生改變
  4. 內容改變
  5. 頁面渲染初始化
  6. 瀏覽器視窗大小發生改變

最小化重繪和重排:

  1. 瀏覽器自動對重排進行優化,對改變的DOM節點進行依賴收集,確認沒有改變的節點,就進行一次更新。
  2. js程式碼優化。(主要包括:儘量減少、避免無意義的DOM操作;方案優化,用其他可行方法替代DOM操作;將多次dom操作收集到一塊,一次性執行多次DOM操作)