2022年2022年浏览器的渲染原理简介 .pdf
《2022年2022年浏览器的渲染原理简介 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年浏览器的渲染原理简介 .pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、浏览器工作大流程从上面这个图中,我们可以看到那么几个事:1)浏览器会解析三个东西:一个是HTML/SVG/XHTML,事实上, Webkit 有三个C+ 的类对应这三类文档。解析这三种文件会产生一个DOM Tree。CSS ,解析CSS 会产生CSS 规则树。Javascript, 脚本,主要是通过DOM API 和 CSSOM API 来操作DOM Tree 和CSS Rule Tree. 2)解析完成后,浏览器引擎会通过DOM Tree 和 CSS Rule Tree 来构造Rendering Tree。注意:Rendering Tree 渲染树并不等同于DOM 树,因为一些像Header
2、 或display:none 的东西就没必要放在渲染树中了。CSS 的 Rule Tree 主要是为了完成匹配并把CSS Rule 附加上Rendering Tree 上的每个Element。也就是DOM 结点。也就是所谓的Frame 。然后,计算每个Frame(也就是每个Element) 的位置,这又叫layout 和 reflow 过程。3)最后通过调用操作系统Native GUI 的 API 绘制。DOM 解析HTML 的 DOM Tree 解析如下:Web page parsing名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - -
3、- - 名师精心整理 - - - - - - - 第 1 页,共 8 页 - - - - - - - - - Web page parsingThis is an example Web page.上面这段HTML 会解析成这样:下面是另一个有SVG 标签的情况。CSS 解析名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 8 页 - - - - - - - - - CSS 的解析大概是下面这个样子(下面主要说的是Gecko 也就是Firefox 的玩法) ,假设我们有下面
4、的HTML 文档:A few quotesFranklin said that A penny saved is a penny earned.FDR said We have nothing to fear but fear itself. 于是 DOM Tree 是这个样子:然后我们的CSS 文档是这样的:/* rule 1 */ doc display: block; text-indent: 1em ; /* rule 2 */ title display: block; font-size: 3em ; /* rule 3 */ para display: block; /* rul
5、e 4 */ font-style: italic; 于是我们的CSS Rule Tree 会是这个样子:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 8 页 - - - - - - - - - 注意,图中的第4 条规则出现了两次,一次是独立的,一次是在规则3 的子结点。所以,我们可以知道,建立CSS Rule Tree 是需要比照着DOM Tree 来的。 CSS 匹配DOM Tree 主要是从右到左解析CSS 的 Selector,好多人以为这个事会比较快,其实并不
6、一定。关键还看我们的CSS 的 Selector 怎么写了。注意: CSS 匹配 HTML 元素是一个相当复杂和有性能问题的事情。所以,你就会在N 多地方看到很多人都告诉你,DOM 树要小, CSS 尽量用id 和 class,千万不要过渡层叠下去, 通过这两个树, 我们可以得到一个叫Style Context Tree,也就是下面这样 (把 CSS Rule 结点Attach 到 DOM Tree 上):所以, Firefox 基本上来说是通过CSS 解析生成CSS Rule Tree,然后,通过比对DOM 生成Style Context Tree,然后Firefox 通过把Style Co
7、ntext Tree 和其名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 8 页 - - - - - - - - - Render Tree(Frame Tree)关联上,就完成了。注意:Render Tree 会把一些不可见的结点去除掉。 而 Firefox 中所谓的Frame 就是一个DOM 结点,不要被其名字所迷惑了 。注:Webkit 不像Firefox 要用两个树来干这个,Webkit 也有 Style 对象,它直接把这个Style 对象存在了相应的DOM 结点
8、上了。渲染渲染的流程基本上如下(黄色的四个步骤):1.计算 CSS 样式2.构建 Render Tree 3.Layout 定位坐标和大小,是否换行,各种position, overflow, z-index 属性 4.正式开画名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 8 页 - - - - - - - - - 注意:上图流程中有很多连接线,这表示了Javascript 动态修改了DOM 属性或是CSS 属性会导致重新Layout ,有些改变不会,就是那些指到天上的
9、箭头,比如,修改后的 CSS rule 没有被匹配到,等。这里重要要说两个概念,一个是Reflow ,另一个是Repaint。这两个不是一回事。Repaint 屏幕的一部分要重画,比如某个CSS 的背景色变了。但是元素的几何尺寸没有变。Reflow 意味着元件的几何尺寸变了,我们需要重新验证并计算Render Tree。是 Render Tree 的一部分或全部发生了变化。这就是Reflow ,或是Layout 。( HTML 使用的是flow based layout,也就是流式布局,所以,如果某元件的几何尺寸发生了变化,需要重新布局,也就叫reflow)reflow 会从 这个 root
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年2022年浏览器的渲染原理简介 2022 浏览器 渲染 原理 简介
限制150内