美文网首页
浏览器渲染流程

浏览器渲染流程

作者: 牛牛_735d | 来源:发表于2019-11-13 21:30 被阅读0次

HTML的内容由标记和文本组成、也称标签

CSS又称 层叠样式表、由选择器和属性组成

JS 使页面内容动起来

渲染模块在执行过程中分为很多子阶段、输入的HTML经过这些子阶段、输出像素、这个处理过程称为 渲染流水线

  1. 构建DOM树

    浏览器无法直接理解和使用html、需要先转化为其能理解的结构 - DOM树

    构建dom树的输入是简单的html文件、经过html解析器解析、输出 树状结构的DOM

    DOM和html的内容基本一致、但dom是保存在内存中的树状就结构、可以通过JS直接修改

  2. 样式计算

    是为了计算出DOM节点中每个元素的具体样式

    1. 将CSS转化为浏览器可理解的结构 stylesheets

    2. 转换样式表中的属性值、使其标准化 eg. 2em -> 32px blue -> rgb(0,0,255)

    3. 计算出dom树中每个节点的具体样式

  3. 布局计算

    计算dom树中可见元素的几何位置

    1. 创建布局树 遍历dom节点、将这些节点加载到布局中

    2. 布局计算 将布局运算的结果写回布局树

  4. 分层

    为了更方便的实现3D变换、页面滚动或者使用z-indexing做z轴排序等

    渲染引擎还需要为特定的节点生成专用图层、并生成一棵对应的图层树LayerTree

    浏览器的页面其实是很多图层、这些图层叠加后合成了最终的页面

    并不是所有的布局树的每个节点都包含一个图层、若节点无对应图层、则从属于父节点的图层

    1. 拥有层叠上下文属性的元素会被提升为单独的一层

    2. 需要裁剪的地方也会被创建为图层

  5. 绘制

    图层的绘制与画画的流程基本一致、会把一个图层的绘制拆分成很多小的绘制指令、然后将指令按照顺序组成一个待绘制列表

  6. 栅格化

    绘制列表只是用来记录绘制顺序和绘制指令的列表、而实际上绘制操作是由渲染引擎中的合成线程来完成(图层绘制列表准备完成后、主线程会把绘制列表提交给合成线程)

    通常、栅格化过程会使用GPU来加速生成、使用GPU生成位图的过程叫 快速栅格化、生成的位图保存在GPU内存中

  7. 合成

    所有图块被光栅化之后、合成进程会生成一个绘制图块的命令、提交给浏览器进程

    浏览器进程的viz组件、接收绘制命令绘制内容显示到浏览器

几个概念

重排: 通过JS或者CS修改元素几何位置、eg. 改变元素的宽、高、等会触发重新布局、解析之后的一系列子阶段、这个过程就叫重排、需要更新完整的渲染流水线、开销很大

重绘: eg. JS更改某些元素的背景色、布局阶段不会重新执行、直接进入绘制阶段、然后执行之后的子阶段、相对重排 少了布局分层阶段、执行效率会高一些

直接合成阶段: eg. 使用CSS的transform来实现动画、可以避开重排重绘阶段、直接在非主线程上执行合成动画操作、大大提升绘制效率

相关文章

  • CSS 会阻塞 DOM 解析吗?

    浏览器的渲染 浏览器的渲染流程如下: 图:WebKit 主流程 图:Mozilla 的 Gecko 呈现引擎主流程...

  • 000_开篇词

    宏观视角下的浏览器 Chrome架构 TCP协议 HTTP请求流程 导航流程 渲染流程(上) 渲染流程(下) 浏览...

  • 浏览器渲染浅析

    1.浏览器渲染主要流程 不同的浏览器内核不同,所以不同浏览器的渲染过程也不太一样。这里我们看下WebKit 的渲染...

  • 浏览器渲染原理

    浏览器组成 主要包括用户界面、浏览器引擎、渲染引擎、网络、Js解释器、UI后端、数据存储。 渲染流程 解析HTML...

  • 浏览器渲染流程

    https://kb.cnblogs.com/page/129756/浏览器渲染流程 函数式https://www...

  • 浏览器渲染流程

    一、浏览器渲染的过程简析 关键渲染路径 (Critical Rendering Path)是指与当前用户操作有关的...

  • 浏览器渲染流程

    HTML的内容由标记和文本组成、也称标签 CSS又称 层叠样式表、由选择器和属性组成 JS 使页面内容动起来 渲染...

  • 浏览器渲染流程

    渲染流程: 构建 DOM 树、样式计算、布局阶段、分层、绘制、光栅化 和 合成。 构建 DOM 树 这是因为浏览...

  • 从 Event Loop 谈 JavaScript 的执行机制

    在上一篇文章 从进程和线程了解浏览器的工作原理 中,我们已经了解了浏览器的渲染流程,浏览器初次渲染完成后,接下来就...

  • 简析浏览器渲染机制

    浏览器渲染流程1.浏览器解析(1)浏览器解析HTML,构建DOM树(2)浏览器解析css,构建CSS规则树(2)解...

网友评论

      本文标题:浏览器渲染流程

      本文链接:https://www.haomeiwen.com/subject/gcnkictx.html