渲染

渲染流水线

构建 DOM 树

  1. 输入:HTML 文档;
  2. 处理:HTML 解析器解析;
  3. 输出:DOM 数据解构。

样式计算

  1. 输入:CSS 文本;
  2. 处理:属性值标准化,每个节点具体样式(继承、层叠);
  3. 输出:styleSheets(CSSOM)。

布局(DOM 树中元素的计划位置)

  1. DOM & CSSOM 合并成渲染树;
  2. 布局树(DOM 树中的可见元素);
  3. 布局计算。

分层

  1. 特定节点生成专用图层,生成一棵图层树(层叠上下文、Clip,类似 PhotoShop 里的图层);
  2. 拥有层叠上下文属性(明确定位属性、透明属性、CSS 滤镜、z-index 等)的元素会创建单独图层;
  3. 没有图层的 DOM 节点属于父节点图层;
  4. 需要剪裁的地方也会创建图层。

绘制指令

  1. 输入:图层树;
  2. 渲染引擎对图层树中每个图层进行绘制;
  3. 拆分成绘制指令,生成绘制列表,提交到合成线程;
  4. 输出:绘制列表。

分块

  1. 合成线程会将较大、较长的图层(一屏显示不完,大部分不在视口内)划分为图块(tile, 256256, 512512)。

光栅化(栅格化)

  1. 在光栅化线程池中,将视口附近的图块优先生成位图(栅格化执行该操作);
  2. 快速栅格化:GPU 加速,生成位图(GPU 进程)。

合成绘制

  1. 绘制图块命令——DrawQuad,提交给浏览器进程;
  2. 浏览器进程的 viz 组件,根据DrawQuad命令,绘制在屏幕上。

相关概念

重排

  1. 更新了元素的几何属性(如宽、高、边距);
  2. 触发重新布局,解析之后的一系列子阶段;
  3. 更新完成的渲染流水线,开销最大。

重绘

  1. 更新元素的绘制属性(元素的颜色、背景色、边框等);
  2. 布局阶段不会执行(无几何位置变换),直接进入绘制阶段。

合成

  1. 直接进入合成阶段(例如CSS 的 transform 动画);
  2. 直接执行合成阶段,开销最小。
此文章为2月Day9学习笔记,内容来源于极客时间《Vim 实用技巧必知必会》,推荐该课程。

浏览器渲染中的相关概念相关推荐

  1. 如何从8 道面试题中,看出浏览器渲染过程与性能优化

    前言 移动互联网时代,用户对于网页的打开速度要求越来越高.百度用户体验部研究表明,页面放弃率和页面的打开时间关系如下图 所示. 根据百度用户体验部的研究结果来看,普通用户期望且能够接受的页面加载时间在 ...

  2. 浏览器渲染类型2d 3d_Google在浏览器中提供3D渲染

    浏览器渲染类型2d 3d Google has released a new experimental browser plugin that makes it possible to display ...

  3. 从一个 bug 中延伸出 canvas 最大内存限制和浏览器渲染原理

    本文作者:雨过天晴 https://zhuanlan.zhihu.com/p/540761999 前几天一个同事让我帮忙解决一个 bug,这个 bug 困扰他好几天了.这是一个 App 中的 Hybr ...

  4. 【总结】1519- 从一个 bug 中延伸出 canvas 最大内存限制和浏览器渲染原理

    本文作者:雨过天晴 https://zhuanlan.zhihu.com/p/540761999 前几天一个同事让我帮忙解决一个 bug,这个 bug 困扰他好几天了.这是一个 App 中的 Hybr ...

  5. html怎么在序列表中加竖线,Chorme浏览器渲染MathJax时出现竖线的解决方法

    Chorme浏览器渲染MathJax时出现竖线的原因分析与解决方法 查资料知,Chorme中显示MathJax时出现竖线的原因如下: 新版的Chorme浏览器在解析css时,会对其中的值进行向上取整( ...

  6. 前端浏览器渲染原理及优化

    文章目录 一.浏览器组成 1. 对浏览器内核的理解 2. 浏览器的主要组成部分 二.浏览器渲染原理 1.浏览器的渲染过程 步骤一: 步骤二: 步骤三: 步骤四: 步骤五: 2.相关概念 ①重排(更新元 ...

  7. 单文件浏览器_图文并茂深度解析浏览器渲染原理,包看懂超值得收藏

    在我们面试过程中,面试官经常会问到这么一个问题,那就是从在浏览器地址栏中输入URL到页面显示,浏览器到底发生了什么?这个问题看起来是老生常谈,但是这个问题回答的好坏,确实可以很好的反映出面试者知识的广 ...

  8. android 重绘如何能不闪一下屏幕_浏览器渲染机制——重绘重排

    性能优化中,减少重绘重排应该是一种很好的优化方式,我们具体看一下什么情况下会造成重绘重排,为什么减少重绘重排可以做到优化,怎么样减少重绘重排. 浏览器渲染过程 我们先看看当浏览器拿到服务端返回的资源时 ...

  9. 从敲入 URL 到浏览器渲染完成、对HTTP协议的理解

    1. 大致过程 当你这样子回答的时候: 用户输入 url 地址,浏览器查询 DNS 查找对应的请求 IP 地址 建立 TCP 连接 浏览器向服务器发送 http 请求,如果服务器段返回以 301 之类 ...

最新文章

  1. BCH再度领涨,BTC能否及时跟上
  2. avalon数据已更新,视图未更新的bug修复
  3. 在 MySQL 中查找含有目标字段的表
  4. python 代码分块_[代码全屏查看]-python多进程分块读取文件
  5. 利用mybatis-generator自动生成代码
  6. android学习之路1:前车之鉴之开发环境搭建
  7. 高立数值最优化方法_最优化理论之无约束优化基本结构及其python应用
  8. dismiss 多个viewController
  9. struts2 传递json对象时的延迟加载异常处理方法
  10. dl388g8 惠普 linux 网卡驱动,hp dl388 gen9驱动下载
  11. oracle数据库:阿拉伯数字转中文:如367转成:三百六十七
  12. 计算机职业规划范文300字,【职业规划300字范文】_职业规划范文300字
  13. 【Python编写漏洞测试工具入门】
  14. echarts 3d柱状图(bar3D)默认缩放大小
  15. 前端调用第三方接口跨域问题(淘宝)
  16. 我买了一辆奥迪,然后……
  17. react项目里使用public的文件
  18. 数模新版视频课程第11讲.时间序列分析
  19. freescale imx6最新版本bsp在天嵌imx6q开发板的移值
  20. 智能家居Homekit系列一智能插座

热门文章

  1. 安装智能消费机服务器连接,中控消费机软件常见问题|中控CM20消费机教程
  2. 转 超棒的动效设计工具及讲解
  3. 手机NFC识别跟看门狗(韦根26)识别卡片的id区别
  4. 信息安全工程师-选择题(一)
  5. 如何选择IIOT数据采集解决方案:公有或私有?
  6. 造成商业软件失败的13种原因
  7. 匿名无人机 --- 遥控器刷中文固件
  8. STM32F103读取富思i6(i-bus)协议,基于固件库开发的版本(V3.5)
  9. Linux gcc 预处理,编译,汇编,链接的命令打字练习
  10. JS中ShowModalDialog(模态窗口)详细使用