瀏覽器算繪
https://www.youtube.com/watch?v=SmE4OwHztCc
code:How is browser rendering content(mermaid)
graph TD
A-->B
B-->C
C-->D
C-->E
C-->F
B-->G
A-->F
table:引擎
瀏覽器算繪
WebKit
code:WebKit(mermaid)
graph TD
DOM{DOM}
HTML((HTML))
STYLE_SHEETS(((Style Sheets)))
DISPLAY>Display]
HTML-->HTML_PARSER
HTML_PARSER-->DOM_TREE
DOM-->DOM_TREE
DOM_TREE-->ATTACHMENT
STYLE_SHEETS-->CSS_PARSER
CSS_PARSER-->STYLE_RULES
STYLE_RULES-->ATTACHMENT
ATTACHMENT-->RENDER_TREE
LAYOUT-->RENDER_TREE
RENDER_TREE-->LAYOUT
RENDER_TREE-->PAINTING
PAINTING-->DISPLAY
Gecko
每個幀內發生的事
1. 執行JavaScript
2. 計算樣式
3. 重新排版
reflow
4. 重新繪製畫面
repaint
5. 合成畫面
癥結點
Scripting time
JavaScript執行佔用的時間
會觸發reflow的屬性
例如top、left、width、height、margin等屬性
會觸發repaint的屬性
例如background-color、box-shadow、border-radius等屬性
由GPU處理的屬性則可掠過reflow與repaint
例如transform或opacity
範例
使用top與left,和使用transform與opacity
只要關掉陰影,即使是未經最佳化的版本都有不錯的效能
除非在數量大幅增加時
額外說明
position: absolute能夠減少算繪負擔,因為每個元素是獨立的
觀測
Cmd+Shift+P
關聯項目