Skip to content

Latest commit

 

History

History
31 lines (16 loc) · 1.27 KB

重绘与重排.md

File metadata and controls

31 lines (16 loc) · 1.27 KB

1、重绘

重绘是一个元素外观的改变所触发的浏览器行为(例如改变visibility,outline,background等属性),浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。

2、重排

重排时更明显的一种改变,可以理解为渲染树需要重新计算。常见的触发重排的操作:

DOM元素的几何属性变化

DOM树的结构变化(例如节点的增减、移动)

获取某些属性(例如offsetTop,offsetLeft,offsetHeight,offsetWidth,clientWidth,clientHeight等)

改变元素的一些样式(例如调整浏览器窗口大小)

3、两者的区别

重绘不会带来重新布局,并不一定伴随着重排。

在实践中,应该尽量减少重排次数和缩小重排的影响范围。有以下几种方法:

将多次改变样式属性的操作合并成一次操作

将需要多次重排的元素,position属性设为absolute或fixed,使其脱离文档流,这样它的变化就不会影响到其他元素

在内存中多次操作节点,完成后再添加到文档中去

如果要对一个元素进行复杂的操作,可以将其display属性设置为none使其隐藏,待操作完成后再显示

在需要经常获取那些引起浏览器重排的属性值时,要缓存到变量