了解基本知識
- 瀏覽器采用的是流式布局模型(Flow Based Layout)
- 瀏覽器會把CSS解析成CSSOM Tree倔既,把HTML解析成 DOM Tree,把這兩個合并成 Render Tree搓彻。
- 有了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)不一致杭攻。