概述
文章目录
- 浏览器渲染页面的流程
- 讲流程前,先讲几个需要了解的知识
- 解析 HTML 文件
- 解析 css 文件
- 渲染树
- 布局
- 绘制
- 渲染流程
浏览器渲染页面的流程
前几天研究了一下这个问题,看了一些视频翻阅了一些博客,在这里记录下来,就当给自己归纳总结一下,也给有需要的友友们参考,如果有哪里说的不对欢迎大家留言评论,我都会去看。
讲流程前,先讲几个需要了解的知识
如果只想知道渲染过程,可以跳过当前节。
解析 HTML 文件
此时浏览器接受到的是显示字节内容的HTML文件,然后再浏览器内部会进行一系列转换,即:
字节 --> 字符 --> token --> 节点对象 --> DOM
解析 css 文件
浏览器会对css文件做一下操作
字节 --> 字符 --> token --> 节点 --> CSSOM
渲染树
页面就是根据渲染树的结构和样式来形成的。
渲染树是DOM
和CSSOM
结合的产物,渲染树的任务是匹配DOM
和CSSOM
的可见节点,并且捕获可见内容挂在渲染树上。
注意:一定是可见内容,例如DOM
节点中的meta
或者link
等标签节点和CSSOM
中display: none
的节点不会被挂在渲染树上。
布局
当渲染树被构造完成之后,页面还不能马上被渲染。浏览器还要根据渲染树的节点进行布局,布局是获取元素的位置既大小,并用盒子模型的形式在页面上进行嵌套
绘制
布局之后,浏览器就可以把渲染树以像素的形式绘制到页面上。
渲染流程
下述过程无论遇到外部js
还是行内js
,都是同样的步骤,同样的解析执行顺序。
- 请求
HTML
- 构建
DOM
- 遇到
link
和script
去请求并下载css
文件和js
文件(在请求下载css
文件时,DOM
的解析还会继续,因为DOM
是可以部分解析的,而请求下载js
文件时,DOM
的解析会被阻塞)- 返回
css
文件:要开始构建CSSOM
,因为CSSOM
不能部分解析,所以此时DOM
会发生阻塞,DOM
必须等待CSSOM
构建完成后才能继续解析(前提:没有js
文件的下载阻塞DOM
) - 返回
js
文件:此时不能立刻执行js
文件,因为js
代码可以对CSSOM
和DOM
进行一些更改,所以要等待CSSOM
构建完成后才能去执行js
文件,这里js
只会等待CSSOM
的构建,并不会等待DOM
的构建。 - 也就是说:
DOM
的解析会在下载js
文件和构建CSSOM
时被阻塞,js
文件需要等待CSSOM
构建完成之后才能执行。
- 返回
- 构建
CSSOM
- 执行
js
文件 - 继续构建后面的
DOM
- 构建渲染树布局和绘制
我们之所以要将js
代码的引入放到body
标签的最后就是因为js
代码会在CSSOM
构建完成之后立即执行,但此时DOM
不一定构建完成了。
最后
以上就是忧心高山为你收集整理的浏览器渲染页面的过程,通俗易懂浏览器渲染页面的流程的全部内容,希望文章能够帮你解决浏览器渲染页面的过程,通俗易懂浏览器渲染页面的流程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复