为什么操作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