浏览器渲染过程简述

 一. 浏览器加载过程

        自上到下逐步进行,而为了用于体验,要尽可能快的把内容呈现出来,浏览器会一边加载一边解析一边渲染呈现。并不会等到所有DOM节点都解析完了之后才会去渲染呈现。因为是从上到下,且js是为了动态操作而生,在加载过程中只需要“抢先”把静态页面的内容呈现给用户就可以了,先“缓解(欺骗)”急性子用户,且加载js会引起阻塞,所以通常把js的引入放在<body>底部最后加载。

(浏览器不仅仅只能加载HTML文件也能加载XML/PDF等文件,只需要给浏览器安装相应的引擎插件即可)。

二.  浏览器渲染过程

    

  1. A. 解析html构建dom树  B.  加载CSS解析并构建CSS规则树
  2. C. 构建render渲染树(A和B结合成C 详见文章最后几张图)
  3. D.reflow/layout布局render渲染树(不包含<head部分>)
  4. E.repaint绘制render渲染树

什么时候会引起reflow?

        当进行DOM操作后,改变了节点的大小、面积、方向等引起DOM树的结构变化,就会reflow重新布局这个节点及周边被它所影响的节点。

什么时候会引起repaint?

        当进行DOM操作后,仅仅改变了节点的颜色等不会引起DOM树结构变化的就只会repaint不会reflow。Reflow要比Repaint更加耗时,也影响性能,PC端可能感觉不出来,但是如果在移动手机端可能会表现的更明显。所以在操作DOM的过程中尽可能避免reflow现象!

display:none和visibility:hidden的区别

        如果节点是display:none则不会出现在render渲染树上,而visibility:hidden会!

 

 

 

 

浏览器基础结构

浏览器基础结构主要包括如下7部分:

  • 1.用户界面(User Interface):用户所看到及与之交互的功能组件,如地址栏,返回,前进按钮等;
  • 2.浏览器引擎(Browser engine):负责控制和管理下一级的渲染引擎;
  • 3.渲染引擎(Rendering engine):负责解析用户请求的内容(如HTML或XML,渲染引擎会解析HTML或XML,以及相关CSS,然后返回解析后的内容);
  • 4.网络(Networking):负责处理网络相关的事务,如HTTP请求等;
  • 5.UI后端(UI backend):负责绘制提示框等浏览器组件,其底层使用的是操作系统的用户接口;
  • 6.JavaScript解释器(JavaScript interpreter):负责解析和执行JavaScript代码;
  • 7.数据存储(Data storage):负责持久存储诸如cookie和缓存等应用数据。

浏览器内核

各大主要浏览器使用内核也是有差别的,大致可以分为以下几类:

  • Trident内核: IE
  • Webkit内核:Chrome,Safari
  • Gecko内核:FireFox

 

转载于:https://my.oschina.net/u/3697586/blog/1543765

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值