什麼是重排:
引起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...