zoukankan      html  css  js  c++  java
  • 前端进阶——浏览器页面渲染过程

    一 、构建 DOM 和 CSSOM 树

    浏览器渲染页面前需要先构建 DOM 和 CSSOM 树。

    浏览器解析过程大概经过:字节 → 字符 → 令牌 → 节点 → 对象模型。

    浏览器处理html页面的方式如下图:

    1、转换:浏览器从磁盘或网络读取HTML的原始字节,并根据文件指定的编码将它们转换成各个字符

    2、令牌化:浏览器将字符串转换成W3C HTML5标准规定的各种令牌(节点)

    3、词法分析:发出的令牌转换成定义其属性和规则的对象

    4、DOM构建:根据标记之间的关系构建dom

    整个流程的最终输出是这个页面的文档对象模型(DOM),浏览器对页面进行的所有进一步处理都会用到它。

    与处理HTML异议,我们将收到的CSS规则转换成浏览器能理解和处理的,我们会重复和html类似的过程:

     

    CSS字节转化成字符,接着转换成令牌和节点,最后链接成CSS对象模型(CSSOM)

     二、渲染树构建、布局及绘制

    DOM和CSSOM构建完成以后,需要合成为渲染树。构建渲染树的工作大概如下:

    1、从DOM树的根节点开始遍历每个可见节点

    2、对于每个可见节点,为其找到适配的CSSOM规则规则并应用

    3、输出可见节点,连同其内容和计算的样式

    有了渲染树下一步就是布局,布局的做的主要是计算每个节点在页面上的确切位置和大小。

    最后一步,我们是将渲染树的每个节点转换成屏幕上的实际像素,这一步成绘制。

    三、总结

    浏览器构建的步骤,大概如下:

    1、处理HTML标记并构建DOM树

    2、处理CSS标记并构建CSSOM树

    3、将DOM与CSSOM合并成一个渲染树

    4、根据渲染树来布局,以计算每个节点的集合信息

    5、将各个节点绘制到屏幕

  • 相关阅读:
    tr的最后一个td
    Jquery的parent方法,这里只讲parent方法
    js判断字符串包含字符串的方法 | 标签包含文本
    js中substring和substr的用法
    一个由印度人编写的VC串口类
    VS2010编译Qt5.4.0静态库
    QT5.4关联VS2010,配置VAssistX关联Qt类
    iOS 关于tableView中有多个textField,输入框被遮住的解决方法
    iOS 之URL schemes
    iOS 之改变状态栏颜色
  • 原文地址:https://www.cnblogs.com/tootwo2/p/7208890.html
Copyright © 2011-2022 走看看