网页生成过程及重排和重绘

一.网页的生成过程

网页的生成过程,大致可以分成五步。

  1. HTML代码转化成DOM
  2. CSS代码转化成CSSOM(CSS Object Model)
  3. 结合DOM和CSSOM,生成一棵渲染树(包含每个节点的视觉信息)
  4. 生成布局(layout),即将所有渲染树的所有节点进行平面合成
  5. 将布局绘制(paint)在屏幕上

这五步里面,第一步到第三步都非常快,耗时的是第四步和第五步。

"生成布局"(flow)和"绘制"(paint)这两步,合称为"渲染"(render)。

二、重排和重绘

网页生成的时候,至少会渲染一次。用户访问的过程中,还会不断重新渲染,重新渲染又分为重排和重绘。

重排(reflow):即重新生成布局,重排必然导致重绘,如元素位置的改变,就会触发重排和重绘。

重绘(repaint):即重新绘制,需要注意的是,重绘不一定需要重排,比如改变某个元素的颜色,就只会触发重绘,而不会触发重排。

以下三种情况,会导致网页重新渲染。

  • 修改DOM
  • 修改样式表
  • 用户事件(比如鼠标悬停、页面滚动、输入框键入文字、改变窗口大小等等)

页面的重排非常耗费资源,是导致网页性能低下的根本原因,所以我们在编写代码时应尽量避免重排。

猜你喜欢

转载自blog.csdn.net/qq_41635167/article/details/83932920