浏览器工作流程

浏览器工作流程主要有四步:
1.将HTML解析为DOM树。
2.渲染解析出的DOM树。
3.布局(确定每一个dom节点的位置)。
4.绘制(在浏览器中呈现出这些dom节点)。

火狐的Gecko ,与谷歌的webkit大致流程相同,个别名字不同火狐的布局叫做(reflow,重排)。

dom操作优化

在实际的开发和使用中,不同的操作,会导致浏览器进行布局(重排)和绘制。比如,js获取dom节点的位置值,包括但不限于height,width,top…等等。因为这些值都是动态计算的,所以浏览器需要尽快完成页面的绘制,然后计算返回值,从而打乱了重排或重绘的优化。所以,在开发中需谨慎取得DOM元素的布局信息。

解析

解析的过程可以分成两个子过程:词法分析和语法分析
词法分析(英语:lexical analysis)是计算机科学中将字符序列转换为单词(Token)序列的过程。进行词法分析的程序或者函数叫作词法分析器(Lexical analyzer,简称Lexer),也叫扫描器(Scanner)。词法分析器一般以函数的形式存在,供语法分析器调用。 完成词法分析任务的程序称为词法分析程序或词法分析器或扫描器。
语法分析是编译过程的一个逻辑阶段。语法分析的任务是在词法分析的基础上将单词序列组合成各类语法短语,如“程序”,“语句”,“表达式”等等.语法分析程序判断源程序在结构上是否正确。

HTML解析过程由两个阶段组成:标记化和树构建。
标记化
遇到字符 < 时,状态更改为“标记打开状态”。
接收一个 a-z 字符会创建“起始标记”,状态更改为“标记名称状态”。
遇到 > 标记时,会发送当前的标记,状态改回“数据状态”。
树构建

//initial mode
<html> //before html
<head>//before head
//in head
</head>//after head<body>Hello world//in body</body>//after body
</html>

呈现树和 DOM 树的关系

在 DOM 树构建的同时,浏览器还会构建另一个树结构:呈现树。这是由可视化元素按照其显示顺序而组成的树,也是文档的可视化表示。它的作用是让您按照正确的顺序绘制内容。

布局

呈现器在创建完成并添加到呈现树时,并不包含位置和大小信息。计算这些值的过程称为布局或重排。为避免对所有细小更改都进行整体布局,浏览器采用了一种“dirty 位”系统。如果某个呈现器发生了更改,或者将自身及其子代标注为“dirty”,则需要进行布局。

全局布局和增量布局

全局布局是指触发了整个呈现树范围的布局,触发原因可能包括:

1.影响所有呈现器的全局样式更改,例如字体大小更改。
2.屏幕大小调整。
布局可以采用增量方式,也就是只对 dirty 呈现器进行布局。

绘制

在绘制阶段,系统会遍历呈现树,并调用呈现器的“paint”方法,将呈现器的内容显示在屏幕上。绘制工作是使用用户界面基础组件完成的。

绘制顺序

1.背景颜色
2.背景图片
3.边框
4.子代
5.轮廓

了解一点浏览器的工作流程相关推荐

  1. 浏览器工作流程_浏览器如何工作

    浏览器工作流程 by Alex Nadalin 通过亚历克斯·纳达林 浏览器如何工作 (How Browsers Work) Web应用程序安全性简介 (An Introduction to Web ...

  2. 充电计划 -- 浏览器工作流程、渲染流程

    浏览器工作流程(渲染流程) 前提 HTTP与TCP/IP区别 HTTP的三大风险 浏览器工作原理 HTTP工作原理 HTTPS工作原理 单向验证 双向认证 浏览器的渲染过程 参考博客:前端面试题必考( ...

  3. 浏览器渲染html的流程,浏览器渲染的工作流程和图片加载与渲染规则

    1 浏览器渲染的工作流程 浏览器的工作原理.以Webkit引擎的工作流程为例,浏览器加载一个HTML页面后进行如下操作 解析HTML[遇到标签加载图片] -> 构建DOM树 加载样式 -> ...

  4. 关于RemoteView的一点愚见(RemoteView在AppWidget中的工作流程)

    前言 由于公司环境恶劣,小菜鸟我本来想画UML图来显示类与类之间的关系,可惜这个念头无法达成,也只好用Word文档来完成.待菜鸟我辞职了,再自己画上UML图和Gif动态图,来显示类于类之间的关系.所以 ...

  5. travis ci_如何使用Travis CI和GitHub进行Web开发工作流程

    travis ci by Vijayabharathi Balasubramanian 通过Vijayabharathi Balasubramanian 如何使用Travis CI和GitHub进行W ...

  6. 史上最全!图解浏览器的工作原理

    可能每一个前端工程师都想要理解浏览器的工作原理. 我们希望知道从在浏览器地址栏中输入 url 到页面展现的短短几秒内浏览器究竟做了什么: 我们希望了解平时常常听说的各种代码优化方案是究竟为什么能起到优 ...

  7. WEB HTTP:浏览器HTTP协议漫谈、请求对象Httprequest、响应对象HttpResponse、浏览器内部工作原理(待完善)

    0 系列目录 WEB请求处理 WEB请求处理一:浏览器请求发起处理 WEB请求处理二:Nginx请求反向代理 WEB请求处理三:Servlet容器请求处理 WEB请求处理四:Tomcat配置实践 WE ...

  8. 【译】浏览器如何工作:在现代web浏览器场景的之下

    原文地址. ( 译者注:这是一篇深度好文,并且附带官方简体中文.本次的翻译为一人完成,限于水平,难免有误,故需要学习本文内容的同学请直接参考原文地址进行阅读. 导读: 终于,我在一周之内讲这长篇大论的 ...

  9. 浏览器如何工作:在现代web浏览器场景的之下

    原文链接 原文:原文地址 ( 译者注:这是一篇深度好文,并且附带官方简体中文.本次的翻译为一人完成,限于水平,难免有误,故需要学习本文内容的同学请直接参考原文地址进行阅读. 导读: 终于,我在一周之内 ...

最新文章

  1. H3C无线 AC网关式部署无线开局(WEB版)
  2. C风格字符串和C++ string 对象赋值操作的性能比较
  3. LASSO与Item Response Theory模型中的隐变量选择
  4. Python中必备知识点:对字符编码的基本操作
  5. Uva 1220,Hali-Bula 的晚会
  6. Leetcode 456. 132 Pattern
  7. 老刘说NLP:焦虑被大肆贩卖下的自然语言处理学习思考
  8. oracle基础知识过一遍(原创)
  9. 时间序列分析(6)| DF检验
  10. 机器学习基础(四十一)—— KNN
  11. Mysql 慢查询和慢查询日志分析
  12. 圈圈USB开发板 IDE40
  13. 微星小飞机界面翻译_小巧高效翻译软件Xtranslator的正确使用姿势
  14. 什么是AppFuse
  15. 计算机232接口接线,9针rs232串口接线图以及接线方法
  16. IPVS使用的Netfilter Hook点
  17. 六、肿瘤RNA突变的全组学研究-肿瘤基因调控(Genomic basis for RNA alterations in cancer)
  18. 联发科10月营收238亿新台币 近6个月低点
  19. 小米4手机选择图库发送图片时崩溃
  20. onenote 思维导图_印象笔记、OneNote、熊掌记 哪个笔记App更适合文字工作者?

热门文章

  1. python二维列表添加_Python - 二维数组
  2. Windows 11 22H2 中文版、英文版 (x64、ARM64) 下载 (updated Mar 2023)
  3. 如何把jar打包成exe
  4. 2022年重庆交通大学自考毕业证书申请流程
  5. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java校园招聘管理系统968b0
  6. JVM 内存布局详解,图文并茂,写得太好了
  7. java程序设计基础题期末考试
  8. Centos8安装MySQL8
  9. HTML学习笔记(一)(HTML基础)
  10. JAVA:输出倒着的直角三角形