瀏覽器解析的基本流程javascript
reflow,瀏覽器根據各類樣式來計算並根據計算結果將元素放到肯定的地方。
repaint: relfow完成以後,瀏覽器把這些元素按照各自的特性繪製一遍。css
一個元素的外觀改變,可是沒有改變佈局的狀況java
visibilityweb
outlinechrome
background colorsegmentfault
改變窗口大小瀏覽器
改變字體chrome-devtools
增長和刪除樣式表工具
內容的改變,好比用戶在輸入框輸入文字佈局
激活僞類
操做class屬性
腳本操做DOM
計算offsetWidth和offsetHeight
設置style屬性
display:none 觸發reflow,而visibility:hidden 觸發repaint,由於沒有發生位置變化
直接改變你想改變的元素(避免經過父元素做用於子元素,而是直接做用於子元素)
避免黃色至內聯樣式
對於動畫的元素,其position設爲fixed或absolute
權衡速度的平滑,速度慢,reflow比較頻繁
避免table佈局
避免css中含有js 表達式(只有IE)
使用chrome開發者工具timeline:
timeline
參考資料: