我们经常写 html 、 css 和 JAVAScript ,写好这些之后,我们就会在浏览器中看到页面,那浏览器究竟在这背后做了一些什么事情呢?本篇文章将揭晓答案!
了解浏览器的渲染原理是我们在通往更深层次的前端开发中不可缺少的,它可以让我们从更深层次、角度去考虑性能优化等~
下面进入正文~
进程、线程浏览器会分配一个线程“自上而下,从左到右”依次解析和渲染代码,那么进程和线程是什么,它们之间有着怎样的关系呢?
进程一个进程就是一个程序运行的实例 。当启动一个程序的时候,操作系统会为该程序创建一块内存,用来存放代码,运行中的数据和一个执行任务的主线程,这样的一个运行环境就叫进程
线程线程不能单独存在,它是由进程来启动和管理的 。线程依附于进程,进程中使用多线程并行处理能提升运算效率
两者之间的关系1、进程中的任意一线程执行出错,都会导致整个进程的崩溃
2、线程之间可以共享数据
3、当一个进程关闭后,操作系统会回收进程所占用的内存
4、进程之间的内容相互隔离
渲染机制从HTML、CSS和JavaScript开始了解浏览器的渲染原理,我们就要从理解 HTML 、 CSS 和 JavaScrip 开始,我们先来看一张图
文章插图
HTML (超文本标记语言),顾名思义,由标记(标签)和文本组成,每个标签都有自己的语意,浏览器会根据标签和文本展示对应的内容 。
CSS (层叠样式表),由选择器和属性组成,它可以改变 HTML 的样式,比如上图中,我们改变了 span 的颜色由蓝色为绿色 。
JavaScript ,我们可以通过 JS 完成很多事情,例如上图中修改样式 。
下面开始分析渲染的原理
渲染流水线渲染模块由于渲染的机制的复杂,被划分为了很多子阶段,输入的 HTML 经过这些子阶段,最后会输出为像素 。这样的处理流程就叫做 渲染流水线
文章插图
按照渲染的时间顺序,流水线可分为几个子阶段:构建 DOM 树、样式计算、布局阶段、分层、绘制、分块、光栅化和合成
构建DOM树由于浏览器无法直接理解和使用 HTML ,所以需要将 HTML 转换为浏览器能够理解的结构( DOM 树)
树结构示意图
文章插图
DOM树的构建过程我们来分析一下下面这段代码会构建出一棵什么样的 DOM 树
文章插图
我们先将上面的代码运行,然后在浏览器控制台输入 document ,看看会有什么效果
文章插图
我们一层级一层级的打开就会看到如上图的效果,我们可以根据这每一层级展开的效果,绘制出一棵 DOM 树结构,如下:
文章插图
接下来,我们试一下利用 JS 修改一下内容,看有什么改变:
文章插图
我们可以看到“浏览器”的文字变成了“chrome”
文章插图
再来看一下 DOM 树是否有改变
文章插图
我们看到在“浏览器”的位置换成了“chrome”,那么如何让 DOM 节点拥有样式?
样式计算样式计算,顾名思义,就是 计算出 DOM 节点中每个元素的具体样式 ,这个阶段会分为三部分:
- 把 CSS 转换为浏览器能够理解的结构
- 转换样式表中的属性值,使其标准化
- 计算出 DOM 树中每个节点的样式
- link 导入外部样式资源
- style 内嵌样式
- 行内样式
- @import 导入
推荐阅读
- HTML最基本知识
- 华为|华为Mate 50 Pro最新渲染图:iPhone 13小刘海设计、带5G手机壳触点
- 屏下指纹|iQOO Neo6入网工信部:骁龙8+512GB超大内存、屏下指纹识别
- oa系统是什么?
- 可乐与雪碧、冰红茶的害处?[红茶]
- 土耳其红茶粉怎么喝?[红茶]
- 快递|外卖、快递员工日入上万引热议!上海:将对跑腿费明显上涨采取措施
- 快递|上海配送骑手日收入过万 7成为打赏背后:订单翻倍泡面冲饥、四处为家
- 无人机|3498元!GoPro发布HERO10新款运动相机:5.3K 60fps、仅重54克
- 母爱是一幅山水画,洗去铅华雕饰,留下清新自然仿写句子 母爱就是一幅优美的画仿写句子