浏览器:重绘与回流

本文详细阐述了浏览器如何通过解析HTML、CSS和JS生成DOM树、CSSOM树并构建RenderTree,以及回流和重绘的概念,强调了减少回流以提高性能的重要性。
摘要由CSDN通过智能技术生成

浏览器的渲染过程

此文是本人学习过程笔记文章 欢迎大家讨论

浏览器获得html、css、js等,将代码渲染到页面的过程如下:

  1. 解析HTML、生成DOM树,解析CSS,生成CSSOM树
  2. 将DOM树和CSSOM树结合,生成渲染树(Render Tree)

image.png
图1.DOM、CSSOM、Render Tree

  1. 根据生成的渲染树,进行回流,获得节点的几何信息(包括位置、大小)
  2. 根据渲染树和回流获得的节点几何信息将其具体化,将位置、大小转换成绝对像素交给GPU
  3. GPU获得节点的像素,通过GPU图像处理单元处理后展示到页面上

生成渲染树

总所周知,浏览器会通过网络进程获取到需要的HTML等文档资源,然后交给浏览器渲染进程,在浏览器渲染进程中会开始解析HTML,解析CSS,同时生成了Render Tree,构建渲染树的过程如下:

  1. 通过DOM树从根节点开始遍历每个可见节点
  2. 对于每一个可见节点,对照CSSOM树找到对应的规则,应用
  3. 根据每个可见节点和样式生成渲染树

不可见节点包括:

  • 设置display:none
  • 输出节点,script、meta、link

注意:css设置visibilityopacity隐藏节点,虽然页面不可见,但是同样会解析到渲染树上。

回流(Reflow)

  • 回流是指浏览器为了重新渲染部分或者全部文档而重新结算元素的位置和几何大小的过程
  • 触发条件:
    • 当改变元素的位置或者几何大小时
      • 删除或添加DOM元素
      • 元素的位置发生改变
      • 元素的尺寸发生改变(包括外边距、内边距、边框大小、高度和宽度等)
      • 内容发生变化、比如文本改变,图片被不同尺寸的图片替换等
      • 页面首次渲染的时候
      • 浏览器窗口大小发生变化
  • 影响:回流是来计算元素的位置和几何大小的,是一种昂贵的操作,它会影响整个页面的布局,所有是很影响性能的,所以我们要减少回流,提高性能

重绘(Repaint)

  • 重绘是指根据浏览器的样式重新绘制元素的过程,又是知道节点的位置和几何大小后转换成绝对像素的过程
  • 触发条件
    • 回流一定触发重绘
    • 当元素的可见样式(例如颜色、背景、阴影等)发生改变时,可能触发重绘。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值