回流 & 重绘
Repaint 重绘
Repaint 只需更新某个元素样式
触发条件:
页面中的元素更新样式风格相关的属性时就会触发重绘,如background,color,cursor,visibility,etc
Reflow 回流
Reflow 需要重新计算整个文档元素位置
触发条件:
盒模型相关的属性: width, height, margin, display, border, etc
定位属性及浮动相关的属性: top, position, float,etc
改变节点内部文字结构也会触发回流: text-align, overflow, font-size, line-height, vertical-align, etc
调整窗口大小
样式表变动
元素内容变化,尤其是输入控件
dom操作
css伪类激活
计算元素的offsetWidth、offsetHeight、clientWidth、clientHeight、width、height、scrollTop、scrollHeight
优化
替代触发回流重绘的属性,比如用translate代替top,用opacity替代visibility
减少reflow操作,直接更改classname或者cssText
频繁reflow的元素可以使用DocumentFragment缓存,或者先display:none,只触发两次回流与重绘
创建新图层,避免外层回流重绘
由页面的渲染过程可知,reflow必将会引起repaint,而repaint不一定会引起reflow
另外图层相关知识可看 无线性能优化:Composite
最后更新于
这有帮助吗?