重排和重绘

浏览器是如何进行界面渲染的

回流 / 重排(reflow)

当 Render Tree 中部分或者全部元素的尺寸结构布局等发生改变时,浏览器就会重新渲染部分全部文档的过程称为回流。

会导致回流(重排)的操作:

  • 页面的首次刷新
  • 浏览器的窗口大小发生改变
  • 元素的大小或位置发生改变
  • 改变字体的大小
  • 内容的变化(如:input框的输入,图片的大小)
  • 激活css伪类 (如::hover)
  • 脚本操作DOM(添加或者删除可见的DOM元素)

简单理解影响到布局了,就会有回流

重绘(Repaints)

由于节点(元素)的样式的改变并不影响它在文档流中的位置和文档布局时(比如:colorbackground-coloroutline等), 称为重绘。

重绘不一定引起回流,而回流一定会引起重绘。

let s = document.body.style
s.padding = '2px'              // 重排 + 重绘
s.border = '1px solid red'    // 再次重排 + 重绘
s.color = 'blue'             // 再次重绘
s.backgroundColor = '#ccc'  // 再次重绘
s.fontSize = '14px'        // 再次重排 + 重绘

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注