当前位置:网站首页>浏览器渲染原理以及重排与重绘
浏览器渲染原理以及重排与重绘
2022-07-05 16:14:00 【爱划水de鲸鱼哥~】
浏览器渲染原理
浏览器渲染分为五个阶段。
第一阶段:HTML解析 --> DOM树
浏览器不能够直接理解 HTML文档,首先对其进行解析,并在解析过程中发出页面渲染所需的各种外部资源请求生成DOM树。
第二阶段: CSS解析 --> CSSOM树
同样浏览器也办法直接理解 CSS 代码,需要将识别并加载的CSS 代码处理成自己理解的 CSSOM 树。
第三阶段: 样式与结构合并 --> 渲染树
浏览器将DOM 树和 CSSOM 树结合在一起生成渲染树(:after :before 等伪元素会在这个环节被构建到 DOM 树中)。
渲染树特点:只包含渲染网页所需的节点。
构建渲染树的过程
- 第一步:从 DOM 树的根节点开始遍历,筛选出所有可见的节点;
- 第二步:对可见节点为其匹配 CSSOM树;
第四阶段: 页面布局 --> 布局渲染树
浏览器对渲染树进行遍历,将元素间嵌套关系以盒子模型的形式写入文档流盒模型,并在布局过程中会计算出元素确切的大小和定位。计算完毕后,将相应的信息写回渲染树上形成“布局渲染树”。
第五阶段: 页面绘制 --> 显示页面
在这一阶段浏览器终于拿到了绘制页面的所有信息,将渲染树上的每一个节点转换成肉眼可见的像素点,最终将页面呈现在我们面前。
重排
当我们修改DOM节点的宽、高或进行隐藏操作时,浏览器就需要重新计算节点的几何属性,然后再将计算的结果绘制出来的过程叫做重排(也叫回流)。
浏览器重排过程
触发重排的条件
- 改变 DOM 树的结构:节点的增减、移动等
- 获取一些需要通过"即时计算"得到值的属性:offsetWidth、offsetHeight、offsetTop、offsetLeft、 scrollTop、scrollLeft、scrollWidth、scrollHeight、clientTop、clientLeft、clientWidth、clientHeight 等属性以及调用 getComputedStyle 方法,或者 IE 的 currentStyle 方法。
重绘
当我们修改DOM的样式(未影响其几何属性)时,浏览器需要重新为元素绘制新的样式过程叫做重绘。
浏览器重绘过程
触发重绘的条件
修改DOM的样式,但未影响其几何属性会发生重绘。
优化
重排和重绘是比较消耗性能的,因此在开发过程中,我们应该避免重排和减少重绘。
本文到此结束
如果大家还有什么其他想法,欢迎在评论区交流!
边栏推荐
- Flet tutorial 12 stack overlapping to build a basic introduction to graphic and text mixing (tutorial includes source code)
- Google Earth Engine(GEE)——Kernel核函数简单介绍以及灰度共生矩阵
- 机器学习编译第2讲:张量程序抽象
- Jarvis OJ Flag
- One click installation script enables rapid deployment of graylog server 4.2.10 stand-alone version
- What is the difference between EDI license and ICP business license
- [61dctf]fm
- Games101 notes (III)
- PHP 严格模式
- Yarn common commands
猜你喜欢
Jarvis OJ Webshell分析
Jarvis OJ Telnet Protocol
文件操作--I/O
Summary of methods for finding intersection of ordered linked list sets
Jarvis OJ simple network management protocol
數據訪問 - EntityFramework集成
国产芯片产业链两条路齐头并进,ASML真慌了而大举加大合作力度
Basic introduction to the control of the row component displaying its children in the horizontal array (tutorial includes source code)
How to uninstall MySQL cleanly
Jarvis OJ Flag
随机推荐
BS-XX-042 基于SSM实现人事管理系统
Flet教程之 12 Stack 重叠组建图文混合 基础入门(教程含源码)
Jarvis OJ shell traffic analysis
PHP人才招聘系统开发 源代码 招聘网站源码二次开发
One click installation script enables rapid deployment of graylog server 4.2.10 stand-alone version
清晰还原31年前现场,火山引擎超清修复Beyond经典演唱会
Solution of vant tabbar blocking content
搜索 正排索引 和 倒排索引 区别
PHP strict mode
Enterprise backup software Veritas NetBackup (NBU) 8.1.1 installation and deployment of server
Seaborn draws 11 histograms
【刷题篇】有效的数独
网站页面禁止复制内容 JS代码
Learnopongl notes (I)
深潜Kotlin协程(二十一):Flow 生命周期函数
WSL2.0安装
DenseNet
Deep dive kotlin synergy (XXI): flow life cycle function
How to set the WiFi password of the router on the computer
Keras crash Guide