重繪和回流(Reflow&Repaint)

了解基本知識

  1. 瀏覽器采用的是流式布局模型(Flow Based Layout)
  2. 瀏覽器會把CSS解析成CSSOM Tree,把HTML解析成 DOM Tree,把這兩個合并成 Render Tree。
  3. 有了Render Tree 我們就知道了所有節(jié)點的位置和樣式,瀏覽器就開始計算他們在頁面中的位置,然后開始繪制

回流(Reflow)

我們把Render Tree重新生成的過程我們稱之為回流?;亓饕鸬脑蛴泻芏?,主要是影響布局的操作。

一、影響布局變化的,會導(dǎo)致回流的操作有:

1 頁面初次渲染
2 瀏覽器窗口發(fā)生改變
3 元素尺寸,位置,內(nèi)容發(fā)生變化
4 元素字體大小變化
5 添加或者刪除的可見dom元素
6 激活CSS偽類,例如 :hover

二、查詢某些屬性或調(diào)用某些方法

clientWidth, clientHeight, clientTop, clientLeft,
offsetWidth, offsetHeight, offsetTop, offsetLeft,
scrollWidth, scrollHeight, scrollTop, scrollLeft,
scrollIntorView(), scrollInToViewIfNeeded(),
getComputedStyle(),getBoundingClientRect(),scrollTop
...

重繪(Repaint)

按照renderTree重新渲染的過程,稱之為重繪。回流一定會導(dǎo)致重繪,否則將會引起表現(xiàn)不一致。

我看有很多網(wǎng)上的老舊知識,把過程講的非常啰嗦而且不準(zhǔn)確,就是一個簡單的知識點。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容