Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >浏览器的运行机制

浏览器的运行机制

原创
作者头像
愤怒的小鸟
修改于 2021-01-14 10:12:20
修改于 2021-01-14 10:12:20
5000
举报
文章被收录于专栏:web shareweb share
  • 解析 HTML 在这一步浏览器执行了所有的加载解析逻辑,在解析 HTML 的过程中发出了页面渲染所需的各种外部资源请求。
  • 计算样式 浏览器将识别并加载所有的 CSS 样式信息与 DOM 树合并,最终生成页面 render 树(:after :before 这样的伪元素会在这个环节被构建到 DOM 树中)。
  • 计算图层布局 页面中所有元素的相对位置信息,大小等信息均在这一步得到计算。
  • 绘制图层 在这一步中浏览器会根据我们的 DOM 代码结果,把每一个页面图层转换为像素,并对所有的媒体文件进行解码。
  • 整合图层,得到页面 最后一步浏览器会合并合各个图层,将数据由 CPU 输出给 GPU 最终绘制在屏幕上。(复杂的视图层会给这个阶段的 GPU 计算带来一些压力,在实际应用中为了优化动画性能,我们有时会手动区分不同的图层)。
几棵重要的“树”

为了使渲染过程更明晰一些,我们需要给这些”树“们一个特写:

  • DOM 树:解析 HTML 以创建的是 DOM 树(DOM tree ):渲染引擎开始解析 HTML 文档,转换树中的标签到 DOM 节点,它被称为“内容树”。
  • CSSOM 树:解析 CSS(包括外部 CSS 文件和样式元素)创建的是 CSSOM 树。CSSOM 的解析过程与 DOM 的解析过程是并行的。
  • 渲染树:CSSOM 与 DOM 结合,之后我们得到的就是渲染树(Render tree )。
  • 布局渲染树:从根节点递归调用,计算每一个元素的大小、位置等,给每个节点所应该出现在屏幕上的精确坐标,我们便得到了基于渲染树的布局渲染树(Layout of the render tree)。
  • 绘制渲染树: 遍历渲染树,每个节点将使用 UI 后端层来绘制。整个过程叫做绘制渲染树(Painting the render tree)。

基于这些“树”,我们再梳理一番:

渲染过程说白了,首先是基于 HTML 构建一个 DOM 树,这棵 DOM 树与 CSS 解释器解析出的 CSSOM 相结合,就有了布局渲染树。最后浏览器以布局渲染树为蓝本,去计算布局并绘制图像,我们页面的初次渲染就大功告成了。

之后每当一个新元素加入到这个 DOM 树当中,浏览器便会通过 CSS 引擎查遍 CSS 样式表,找到符合该元素的样式规则应用到这个元素上,然后再重新去绘制它。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
作者已关闭评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Androi】安卓发展历程详解
安卓(Android)操作系统自2008年首次发布以来,迅速发展成为全球最广泛使用的移动操作系统。本文将详细回顾安卓的历史发展过程,探讨其在技术、市场和用户体验方面的演变。
人不走空
2024/06/09
2.8K0
【Androi】安卓发展历程详解
Android 1.5到10.0 都有哪些新特性?
安卓3.0系统主要用于安卓的平板产品,画面动感,可操控性更强,代表有摩托罗拉的平板产品XOOM,3.1也已经发布,也主要用于平板产品。
用户1269200
2019/03/08
2.2K0
B4A编程开发路线001_Android安卓基础
2023年02月04日午夜,在搜索中文可视化编程IDE时无意中发现了B4X的官网:跨平台 RAD 开发工具 |B4X。
用户1549490
2023/07/12
1.2K0
B4A编程开发路线001_Android安卓基础
【Flutter实战】移动技术发展史
老孟导读:大家好,这是【Flutter实战】系列文章的第一篇,这并不是一篇Flutter技术文章,而是介绍智能手机操作系统、跨平台技术的演进以及我对各种跨平台技术看法的文章。
老孟Flutter
2020/09/11
9860
【Flutter实战】移动技术发展史
跟我学Android之一 概述
Android 5更新你的应用程序添加各种新功能,比如在锁屏通知,一个全新的相机API,OpenGL ES 3.1,新材料的设计界面,以及更多。
张哥编程
2024/12/17
1200
跟我学Android之一  概述
操作系统发展史(移动端)
HTML5学堂:手机操作系统发展史。从手机出现到现在,手机发生了翻天地覆的变化,也是经历了几场“大战”。本文主要讲解的诺基亚的时代到现在苹果、安卓的时代的一个演变的过程。 诺基亚: 1. 在2007年
HTML5学堂
2018/03/12
1.9K0
操作系统发展史(移动端)
Android 10.0正在来的路上!
目前,美国 Google公司的 AndroidP (安卓9.0),已经正式全面推出有几个多月了。众多手机品牌厂商也都在积极的进行更新适配 Android 9.0 系统(修改UI界面也算是二次开发,嗯)。不知道各位Android用户是否体验到了这一最新版本的系统呢?
刘盼
2019/05/08
9520
Android 10.0正在来的路上!
安卓入门(八)
如今IT的发展如此之快,从硬件时代到现在物联网时代,Android是基于Linux开发的操作系统,Android本意指“机器人”,由Ascender设计的Logo图标,将Android设计为一个绿色的机器人,是一个功能强大的移动系统,也是一个为手机服务的,开放性系统。
达达前端
2022/04/29
6100
安卓入门(八)
Android9.0新特性曝光,你准备好了吗
Android9.0最早出现在2018年1月25日的谷歌官网上,初步代号已经确定为“Pistachio Ice Cream”(开心果冰淇淋),不过按照Google的惯例,如此长的三个单词代号,通常都只会在安卓新版本开发初期使用,后期会更换为更简单的单个或双个单词代号。那么Android9.0究竟带来了哪些新的特性呢,让我们先来一探究竟。
xiangzhihong
2022/11/30
7740
AndroidO(8.0) 和 Android P(9.0)
2017年8月22日,谷歌正式发布了Android8.0的正式版,其正式名称为:Android Oreo(奥利奥) 。
全栈程序员站长
2022/07/23
9930
AndroidO(8.0) 和 Android P(9.0)
蓝图已经画好了?透过“Q”看未来Android手机发展
5月8日凌晨,Google I/O开发者大会在美国加利福尼亚州山景城举行。本次开发者大会最引人关注的,莫过于安卓Q的正式发布了,因为相比于所谓的“安卓标杆”(然而并不是)Pixel手机本身,安卓的大版本更新似乎更能代表未来一年里安卓手机发展的风向标。
Android技术干货分享
2019/05/15
9150
蓝图已经画好了?透过“Q”看未来Android手机发展
Android和Linux应用综合对比分析
本文介绍了嵌入式Linux操作系统在工业自动化领域中的应用,包括各种工业设备、通信和数据处理等方面。同时,文章还探讨了基于嵌入式Linux的工业自动化技术的未来发展趋势,包括实时性、远程访问、无线通信等方面。
用户1170933
2018/01/05
4.4K0
Android和Linux应用综合对比分析
手机操作系统的沉浮往事(下)
这一年的1月9日,在Macworld 2007大会上,史蒂夫·乔布斯正式发布了第一代iPhone。
鲜枣课堂
2023/08/21
2670
手机操作系统的沉浮往事(下)
新一代Pixel手机,谷歌能否颠覆移动VR?
美国时间10月4日,在谷歌的新品发布会上,推出了手机Pixel 的续品Pixel 2以及VR头显。该款机型与之前爆出的差别不大,标准版Pixel 2屏幕大小为5英寸,而XL款的屏幕大小为6英寸。机身采
VRPinea
2018/05/17
6230
回顾iOS1到iOS15的发展
大家都爱调侃,最近这两年 iOS 的升级越来越安 卓化了,但你有了解过,ios 的历史是怎样的, 它是如何从一个青涩少年变成如今成熟的「大 人」模样?走进i0s 的进化史,看看 ios 从1到 15 都变化了什么! hello i0s 系统发布时间轨迹:iphone os 1 (2007) iPhone OS 2 (2008) iPhone OS 3 (2009) iOS 4 (2010) iOS 5 (2011) iOS 6 (2012) iOS 7 (2013) iOS 8 (2014) iOS9 (2015) iOS 10 (2016) iOS 11 (2017) iOS 12 (2018) iOS 13 (2019) iOS 14 (2020) iOS 15 (2021)
零式的天空
2022/03/28
3.4K0
Google I/O大会:Android 13
以智能手机为场景核心、 扩大智能终端的应用边界以及实现多设备间更好地协同。具体到系统体验层,安卓13将支持图标颜色随主题更换、为不同应用设定使用的语言、新的媒体中心界面等等,同时谷歌也推出了自家的钱包应用(Google Wallet)。
北洋
2022/05/14
5680
Google I/O大会:Android 13
Android 更新:新图标,新命名
当地时间8月22日,在Android Police网站上David Ruddock爆出Android将会使用新的图标及命名规则,在即将发布的新版Android系统上。
陈宇明
2020/12/16
5620
谷歌秋季发布会明天开启,“Pixel”系列会成为移动VR的全新里程碑?
北京时间10月5日凌晨,谷歌将召开2016年度秋季发布会。此次发布会不仅将发布作为Nexus迭代产品的Pixel系列手机,更有可能在该系列手机上,正式推出谷歌基于移动端开发的Daydream产品。 自
VRPinea
2018/05/14
7430
Winter漫聊手机——开篇
所谓漫聊,即无忧虑地聊,且不局限。因而,虽说是聊手机,但Winter也会附带性地聊点电脑、相机、VR及厂商等。时间顺序总是最适合懒人的,那就从2011年聊起吧。
冰之角
2018/09/04
1.3K0
Winter漫聊手机——开篇
谷歌 Android Q Labs技术分享会,腾讯WeTest福利抢先看!!!
腾讯官方的一站式品质开放平台「腾讯WeTest」收到谷歌邀请,参加2019年5月20日由谷歌在深圳举办的Android Q Labs技术分享会。
WeTest质量开放平台团队
2019/05/20
9790
谷歌 Android Q Labs技术分享会,腾讯WeTest福利抢先看!!!
相关推荐
【Androi】安卓发展历程详解
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档