美文网首页饥人谷技术博客
简述浏览器的渲染机制

简述浏览器的渲染机制

作者: Schrodinger的猫 | 来源:发表于2017-05-30 00:45 被阅读0次
渲染图
引用文章
浏览器能够对以下文件进行解析,HTML,SVG和XHTML;解析生成DOM树;javascript脚本文件会通过DOM API 和CSSOM API操控DOM Tree;CSS文件解析生成CSS Rule Tree。
解析完成后浏览器引擎会根据生成的DOM树和CSS规则树构建渲染树;但渲染树不一定等同于DOM树因为元素中display:none或者其他的一些标签不会放在渲染树中进行渲染。
CSS规则树会匹配到渲染树中的每个元素(DOM节点),并给它们加上CSS Rule。然后计算每个元素的位置,这个过程叫做回流(reflow)。最后通过调用操作系统Native GUI的API绘制。

DOM树的解析过程(Firefox)

<html>
<html>
<head>
    <title>Web page parsing</title>
</head>
<body>
    <div>
        <h1>Web page parsing</h1>
        <p>This is an example Web page.</p>
    </div>
</body>
</html>

上述代码的DOM树会被解析成这样:


DOM树

CSS规则树的解析过程(Firefox)

<doc>
<title>A few quotes</title>
<para>
  Franklin said that <quote>"A penny saved is a penny earned."</quote>
</para>
<para>
  FDR said <quote>"We have nothing to fear but <span>fear itself.</span>"</quote>
</para>
</doc>
DOM树

CSS代码如下:

 /* rule 1 */ doc { display: block; text-indent: 1em; }
/* rule 2 */ title { display: block; font-size: 3em; }
/* rule 3 */ para { display: block; }
/* rule 4 */ [class="emph"] { font-style: italic; }
CSS规则树
CSS规则树图中rule4出现了2次,一次是独立的,另一次在规则3的子节点,建立CSS规则树是按照DOM树的结构来建立的。PS(CSS匹配DOM树是一个非常耗性能和复杂的事情所以DOM树要小,CSS尽量用id和class,不要过度层叠下去)
根据DOM树和CSS规则树匹配构造一个Style Context Tree;然后关联Style Context Tree和渲染树。
Style Context Tree
接下来就是渲染:
渲染的流程基本上如下(黄色的四个步骤):
计算CSS样式
构建Render Tree
Layout – 定位坐标和大小,是否换行,各种position, overflow, z-index属性 ……
正式开画
渲染

reflow和repaint

*(为什么不能用CSS通配符 ,CSS选择器层叠为什么不能超过三层,CSS为什么尽量使用类选择器,书写HTML为什么少使用table,为什么结构要尽量简单-DOM树要小….)
Reflow:对于DOM结构中的各个元素都有自己的盒子(模型),这些都需要浏览器根据各种样式(浏览器的、开发人员定义的等)来计算并根据计算结果将元素放到它该出现的位置,这个过程称之为reflow。
Repaint:当各种盒子的位置、大小以及其他属性,例如颜色、字体大小等都确定下来后,浏览器于是便把这些元素都按照各自的特性绘制了一遍,于是页面的内容出现了,这个过程称之为 repaint。
注意:回流必将引起重绘,而重绘不一定会引起回流
Reflow的成本要比Repaint大得多;DOM树每个节点都有一个Reflow方法,一个节点的Reflow方法有可能触及父节点或者其他节点的Reflow。
增删改DOM节点,移动DOM,做动画,修改CSS样式滚动页面,修改默认字体等等都会触发Reflow或Repaint。减少Reflow和Repaint的一些方法:

  1. 尽量预先定义好CSS的类,然后去修改DOM的className;
  2. 不要把DOM结点的属性值放在一个循环里当成循环里的变量;
  3. 为动画的HTML元件使用fixed或absoult的position,那么修改它们的CSS是不会reflow的;
  4. 尽可能的修改层级比较低的DOM。

相关文章

  • 简述浏览器渲染机制

    一 : 为什么要了解浏览器渲染页面的机制,主要还是性能的优化。 了解浏览器如何进行加载,我们可以在引用外部样式文件...

  • 简述浏览器渲染机制

    互联网不断高速发展的今天,使用浏览器浏览页面几乎已经变成日常必做事项了,那么你了解浏览器是怎么把一堆枯燥的代码变成...

  • 简述浏览器渲染机制

    解析 HTML 标签, 构建 DOM 树 解析 CSS 标签, 构建 CSSOM 树 3. 把 DOM 和 C...

  • 简述浏览器渲染机制

    一 : 为什么要了解浏览器渲染页面的机制,主要还是性能的优化。了解浏览器如何进行加载,我们可以在引用外部样式文件,...

  • 简述浏览器的渲染机制

    DOM树的解析过程(Firefox) 上述代码的DOM树会被解析成这样: CSS规则树的解析过程(Firefox)...

  • 浏览器的渲染机制

    在网页中css、js的放置顺序 将css放在head中,将js放在body的尾部中 简述浏览器的渲染机制 解析HT...

  • 略知一二之浏览器渲染原理

    浏览器渲染原理 推荐相关阅读文章 浏览器页面渲染机制,你真的弄懂了吗? 关键渲染路径 深入浅出浏览器渲染原理 [译...

  • 简述网页的渲染机制

    DOM:Document Object Model,浏览器将HTML解析成树形的数据结构,简称DOM。CSSOM:...

  • 简述网页的渲染机制

    网页的基本组成结构 网页 = HTML + CSS + JavaScriptHTML:网页元素内容CSS: 控制网...

  • 简述网页的渲染机制

    首先,我们回顾一下网页渲染时,浏览器的动作: 1.根据来自服务器端的 HTML 代码形成文档对象模型(DOM)2....

网友评论

    本文标题:简述浏览器的渲染机制

    本文链接:https://www.haomeiwen.com/subject/hrmlfxtx.html