浏览器的渲染原理简介

浏览器的渲染原理简介

ID:11273535

大小:299.97 KB

页数:8页

时间:2018-07-11

浏览器的渲染原理简介_第1页
浏览器的渲染原理简介_第2页
浏览器的渲染原理简介_第3页
浏览器的渲染原理简介_第4页
浏览器的渲染原理简介_第5页
资源描述:

《浏览器的渲染原理简介》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、浏览器工作大流程  从上面这个图中,我们可以看到那么几个事:  1)浏览器会解析三个东西:·一个是HTML/SVG/XHTML,事实上,Webkit有三个C++的类对应这三类文档。解析这三种文件会产生一个DOMTree。·CSS,解析CSS会产生CSS规则树。·Javascript,脚本,主要是通过DOMAPI和CSSOMAPI来操作DOMTree和CSSRuleTree.  2)解析完成后,浏览器引擎会通过DOMTree和CSSRuleTree来构造RenderingTree。注意:·RenderingTree渲染树并不等同于DOM树,因为一些

2、像Header或display:none的东西就没必要放在渲染树中了。·CSS的RuleTree主要是为了完成匹配并把CSSRule附加上RenderingTree上的每个Element。也就是DOM结点。也就是所谓的Frame。·然后,计算每个Frame(也就是每个Element)的位置,这又叫layout和reflow过程。  3)最后通过调用操作系统NativeGUI的API绘制。  DOM解析  HTML的DOMTree解析如下:  Webpageparsing

3、>  

  

Webpageparsing

  

ThisisanexampleWebpage.

  
  上面这段HTML会解析成这样:  下面是另一个有SVG标签的情况。  CSS解析  CSS的解析大概是下面这个样子(下面主要说的是Gecko也就是Firefox的玩法),假设我们有下面的HTML文档:AfewquotesFranklinsaidthat"Apennysavedisapennyearned."

4、FDRsaid"Wehavenothingtofearbutfearitself."  于是DOMTree是这个样子:  然后我们的CSS文档是这样的:/*rule1*/doc{display:block;text-indent:1em;}/*rule2*/title{display:block;font-size:3em;}/*rule3*/para{display:block;}/*rule4*/[]{font-styl

5、e:italic;}  于是我们的CSSRuleTree会是这个样子:  注意,图中的第4条规则出现了两次,一次是独立的,一次是在规则3的子结点。所以,我们可以知道,建立CSSRuleTree是需要比照着DOMTree来的。CSS匹配DOMTree主要是从右到左解析CSS的Selector,好多人以为这个事会比较快,其实并不一定。关键还看我们的CSS的Selector怎么写了。  注意:CSS匹配HTML元素是一个相当复杂和有性能问题的事情。所以,你就会在N多地方看到很多人都告诉你,DOM树要小,CSS尽量用id和class,千万不要过渡层叠下去

6、,……  通过这两个树,我们可以得到一个叫StyleContextTree,也就是下面这样(把CSSRule结点Attach到DOMTree上):  所以,Firefox基本上来说是通过CSS解析生成CSSRuleTree,然后,通过比对DOM生成StyleContextTree,然后Firefox通过把StyleContextTree和其RenderTree(FrameTree)关联上,就完成了。注意:RenderTree会把一些不可见的结点去除掉。而 Firefox中所谓的Frame就是一个DOM结点,不要被其名字所迷惑了。  注:Webki

7、t不像Firefox要用两个树来干这个,Webkit也有Style对象,它直接把这个Style对象存在了相应的DOM结点上了。  渲染  渲染的流程基本上如下(黄色的四个步骤):1.计算CSS样式2.构建RenderTree3.Layout–定位坐标和大小,是否换行,各种position,overflow,z-index属性……4.正式开画  注意:上图流程中有很多连接线,这表示了Javascript动态修改了DOM属性或是CSS属性会导致重新Layout,有些改变不会,就是那些指到天上的箭头,比如,修改后的CSSrule没有被匹配到,等。  这

8、里重要要说两个概念,一个是Reflow,另一个是Repaint。这两个不是一回事。·Repaint——屏幕的一部分要重画,比如某个CSS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。