DOM变化影响到了元素的几何属性(宽高),浏览器会重新计算元素的几何属性,其它元素的几何属性和位置也会受到影响,浏览器需要重新构造渲染树,这个过程称为重排(回流)。浏览器将受到影响的部分重新绘制到屏幕上的过程称为重绘。
(另一种:重绘是指元素外观改变所触发的浏览器行为,如visibility,背景样式,outline等。浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。
重排是指:更明显的改变,需要浏览器重新计算渲染树,每个页面至少有一次回流,即使页面加载的时候。)
引起重排的原因
- 增加或移除样式表
- 添加或删除可见的DOM元素
- 改变元素的尺寸、内容、位置、字体
- 浏览器页面初始化
- 浏览器窗口尺寸改变
- 设置style属性值
重排一定引起重绘,重绘不一定重排
减少重排和重绘的方法
- 不在布局信息改变时做dom查询
- 使用cssText或className一次性改变属性
- 对于多次重排的元素,使用绝对定位脱离文档流,如动画。
document. write重绘整个页面
innerHTML重绘部分页面