重绘和回流(Reflow&Repaint)

了解基本知识

  1. 浏览器采用的是流式布局模型(Flow Based Layout)
  2. 浏览器会把CSS解析成CSSOM Tree,把HTML解析成 DOM Tree,把这两个合并成 Render Tree。
  3. 有了Render Tree 我们就知道了所有节点的位置和样式,浏览器就开始计算他们在页面中的位置,然后开始绘制

回流(Reflow)

我们把Render Tree重新生成的过程我们称之为回流。回流引起的原因有很多,主要是影响布局的操作。

一、影响布局变化的,会导致回流的操作有:

1 页面初次渲染
2 浏览器窗口发生改变
3 元素尺寸,位置,内容发生变化
4 元素字体大小变化
5 添加或者删除的可见dom元素
6 激活CSS伪类,例如 :hover

二、查询某些属性或调用某些方法

clientWidth, clientHeight, clientTop, clientLeft,
offsetWidth, offsetHeight, offsetTop, offsetLeft,
scrollWidth, scrollHeight, scrollTop, scrollLeft,
scrollIntorView(), scrollInToViewIfNeeded(),
getComputedStyle(),getBoundingClientRect(),scrollTop
...

重绘(Repaint)

按照renderTree重新渲染的过程,称之为重绘。回流一定会导致重绘,否则将会引起表现不一致。

我看有很多网上的老旧知识,把过程讲的非常啰嗦而且不准确,就是一个简单的知识点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容