重绘(repaint)——当页面中的元素只是外观或风格被改变不影响布局,这个过程就是重绘。
重排(relayout)——当RenderTree中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变,浏览器为了重新渲染部分或整个页面,重新计算页面元素位置和几何结构的过程,也就是重新构造渲染树 ,这个过程叫做重排(relayout)。
回流(reflow)——Gecko中布局的称谓,同时也是重排的别称。
什么时候触发重排?
- 添加或删除可见的DOM元素。
- 元素位置改变
- 元素尺寸改变( 外边距、内边距、边框厚度、宽度、高度等)
- 内容改变,例:文本改变或图片被另一个不同尺寸的图片替代
- 页面渲染器初始化
- 浏览器窗口尺寸改变
触发重排的属性:
offsetTop、offsetLeft、offsetWidth、offsetHeight
scrollTop、scrollLeft、scrollWidth、scrollHeight
clientTop、clientLeft、clientWidth、clientHeight
getComputedStyle()