重繪
重繪就是重新繪畫瓶竭,重繪是一個元素外觀的改變所觸發(fā)的瀏覽器行為督勺,當給一個元素更換顏色、更換背景斤贰,雖然不會影響頁面布局智哀,但是顏色或背景變了,瀏覽器就會根據元素的新屬性重新繪制荧恍,這就是重繪
回流
當增加或刪除 dom 節(jié)點瓷叫,或者給元素修改寬高時,會改變頁面布局送巡,那么就會重新構造 dom 樹然后再次進行渲染赞辩,這就是回流
總結
- 重繪不會引起 dom 結構和頁面布局的變化,只是樣式的變化授艰,有重繪不一定有回流
- 回流則是會引起 dom 結構和頁面布局的變化辨嗽,有回流就一定有重繪
不管怎么說都是會影響性能
怎么進行優(yōu)化或減少?
- 1淮腾、多個屬性盡量使用簡寫糟需,例如:boder 可以代替 boder-width、boder-color谷朝、boder-style
- 2洲押、創(chuàng)建多個 dom 節(jié)點時,使用 documentfragment 創(chuàng)建
- 3圆凰、避免使用 table 布局
- 4杈帐、避免設置多層內聯(lián)樣式,避免節(jié)點層級過多
- 5专钉、避免使用 css 表達式
- 6挑童、將頻繁重繪或回流的節(jié)點設置為圖層,圖層能夠阻止該節(jié)點的渲染行為影響到別的節(jié)點(例:will-change \ video \ iframe等標簽)跃须,瀏覽器會自動將該節(jié)點變?yōu)閳D層
- 7站叼、脫離文檔流之后進行的任何操作,都不會造成回流了菇民,復雜操作的地方尽楔,不妨使用 position:absolute / fixed定位