爲什麼操作DOM速度慢
瀏覽器中JavaScript和DOM分開執行
Chrome中Js由V8引擎執行,DOM由Webkit內核的WebCore渲染
Safari中Js由JavaScriptCore渲染,DOM由Webkit內核的WebCore渲染
迴流一定重繪,重繪不一定迴流
迴流
瀏覽器流式佈局,DOM節點樹形結構,一個節點改變,整個DOM結構重新計算,引發迴流。
觸發條件:
- 首次渲染
- 改變DOM節點
style
樣式的變化,元素位置,元素大小- 頁面大小,
resize()
事件 - 激活一些僞類(:hover)
重繪
元素改變不影響其位置(顏色、字體)
減少重繪
- DOM的操作不放在循環中
- 將
style
樣式改成class
,改變class
即可,只會重繪一次 - 動畫HTML的
position
儘量設成fixd
或absolute
- 不使用
table