页面渲染:过程分析

栏目: CSS · 发布时间: 5年前

内容简介:DOM全称为文档对象模型Document Object Model,其中一个DOM节点对应一个标签,Dom树即表示了HTML的文档结构。转化过程如下图所示:CSSOM全称为CSS对象模型CSS Object Model,CSSOM告诉了浏览器元素在渲染时是什么样的。与HTML一样,我们需要将收到的 CSS 规则转换为浏览器可以理解、能够处理的东西。因此,我们重复与处理 HTML 非常相似的过程:CSSOM只输出包含有样式的节点,最终输出为:

DOM全称为文档对象模型Document Object Model,其中一个DOM节点对应一个标签,Dom树即表示了HTML的文档结构。转化过程如下图所示:

页面渲染:过程分析
  1. 解码 :浏览器从磁盘或网络读取HTML的原始字节,然后根据指定的文件编码格式(例如 UTF-8)将其转换为相应字符
  2. 令牌化 :浏览器把字符转化成W3C HTML5 标准指定的各种确切的令牌,比如""、""以及其他在尖括号内的字符串。每个令牌都有特殊的含义以及它自己的一套规则
  3. 词法分析 :生成的令牌转化为对象,这个对象定义了它们的属性及规则
  4. DOM树构建 :最后,由于HTML标记定义了不同标签之间的关系(某些标签嵌套在其他标签中),创建的对象在树状的数据结构中互相链接,树状数据结构也捕获了原始标签定义的父子关系:HTML对象是body对象的父对象,body是p对象的父对象等等

2. CSS → CSSOM树(解析CSS样式)

CSSOM全称为CSS对象模型CSS Object Model,CSSOM告诉了浏览器元素在渲染时是什么样的。与HTML一样,我们需要将收到的 CSS 规则转换为浏览器可以理解、能够处理的东西。因此,我们重复与处理 HTML 非常相似的过程:

页面渲染:过程分析

CSSOM只输出包含有样式的节点,最终输出为:

页面渲染:过程分析

3. 生成渲染树Render Tree (计算可见节点和样式)

DOM描述的是文档结构,CSSOM描述的是文档的样式规则,构建这颗树的目的是为了以正确的顺序绘制文档内容,渲染树为:

页面渲染:过程分析

它有下面的特点:

  • 不包括Header 、 script 、meta 等不可见的节点
  • 某些通过 CSS 隐藏的节点在渲染树中也会被忽略,比如应用了 display:none 规则的节点,而visibility: hidden只是视觉不可见,仍占据空间,不会被忽略。

4. (渲染)layout (依照盒子模型,计算出每个节点在屏幕中的位置及尺寸)

5. (渲染)painting ( 按照算出来的规则,通过显卡,把内容画到屏幕上。)

三、重新渲染

1. reflow重排 (即重新layout)

当可见节点位置及尺寸发生变化时会发生重排,具体为下面情况:

  • 页面初始渲染
  • 添加/删除 可见 DOM元素
  • 改变元素位置
  • 改变元素尺寸(宽宽、高、 内外边距、边框 等)
  • 改变元素内容**(文本、html等)**
  • 改变元素 字体大小
  • 改变窗口尺寸

不会发生重排的行为:

  • 读取dom节点属性、内容、样式

2. repaint重绘 (即重新paint)

改变某个元素的背景色、文字颜色、边框颜色等等不影响它周围或内部布局的属性时,屏幕的一部分要重画,但是元素的几何尺寸没有变。

它是一个可见节点改变 除位置和大小以外的外观 所触发的浏览器行为,有下面几个特点:

  • 重绘不一定导致重排
  • 重排一定会导致重绘,因为重绘是浏览器渲染页面的最后一步

问题

问:浏览器在什么时候向服务器发送获取css、js外部文件的请求?

答:解析DOM时碰到外部链接,如果还有connection,则立刻触发下载请求。

问:CSSOM DOM JavaScript三者阻塞关系?

答:CSSOM DOM互不影响,JavaScript会阻塞DOM树的构建但JS前的HTML可以正常解析成DOM树,CSSOM的构建会阻塞JavaScript的执行。这也解释了为什么JavaScript的执行都需要访问DOM和CSSOM的能力,却只受CSSOM的阻塞。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

演算法圖鑑

演算法圖鑑

石田保輝、宮崎修一 / 陳彩華 / 臉譜 / 2017-12 / TWD450

★日本超人氣演算法學習書 ★逾50萬次下載量,「Apple年度最佳APP」書籍化! ★隨書附贈獨家贈品「圖形搜尋和排序圖解記憶表」 ★★ 讀再多文字解說都看不懂?沒關係,全部畫給你看,一次弄懂演算法到底是什麼!★★ ●直觀理解,從基礎開始學習,一用就上手的演算法專書! ●全圖像化step by step,完整拆解制霸AI時代的演算法精髓! ●詳解演算法的奧妙、執......一起来看看 《演算法圖鑑》 这本书的介绍吧!

随机密码生成器
随机密码生成器

多种字符组合密码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具