1、 概念: 当渲染树的一部分必须更新并且节点的尺寸发生变化,浏览器会使渲染树中受到影响的部分失效,并重新构建渲染树
2、 引发重排:
1、 在一个元素的外观被改变所触发的浏览器行为,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。
2、 例如: 改变某个元素的背景色、文字颜色、边框颜色等
重绘不一定需要重排,重排必然导致重绘(比如改变网页位置)
浏览器会维护1个队列,把所有引起重排、重绘的操作放在这个队列中,等队列中的操作到一定数量或者到一定时间间隔,浏览器就会flush队列,进行一批处理
减少reflow/repaint:
不要一条一条修改DOM的样式,可以先定义好css的class,然后修改DOM的className
不要把DOM结点的属性值放在一个循环里当成循环里的变量
为动画的HTML元件使用fixed或absolute的position,那么修改他们的css是不会reflow的。
千万不要使用table布局.很小的一个改动就会造成整个table的重新布局
不要在布局信息改变的时候做查询(会导致渲染队列强制刷新)