Web 前端开发 让前端飞

浏览器的渲染机制初探

2017-06-28  本文已影响0人  JokerPeng

零、什么是DOCTYPE及其作用?

通俗易懂的说就是,DTD告诉浏览器我是什么文档类型,浏览器根据这来判断用什么解析和渲染它。

通俗易懂的解释就是,DOCTYPE通知浏览器当前文档包含的是哪个DTD,即何种文档类型。

严格模式(Strict):该DTD包含所有HTML元素和属性,但不包括展示性的和弃用的元素,如font,center,big等
传统模式(Tranditional):该DTD包含所有HTML元素和属性,包括展示性的和弃用的元素,如font,center,big等

一、浏览器的渲染过程

浏览器渲染过程(图片来源网络)

几个概念:
DOM Tree:浏览器将HTML解析成树形的数据结构。

CSS Rule Tree:浏览器将CSS解析成树形的数据结构。

Render Tree: DOM和CSSOM合并后生成Render Tree。

Layout: 有了Render Tree,浏览器已经能知道网页中有哪些节点、各个节点的CSS定义以及他们的从属关系,从而去计算出每个节点在屏幕中的位置。

Painting: 按照算出来的规则,通过显卡,把内容画到屏幕上。

渲染过程:

二、Reflow 重排

1、定义

当渲染树中的一部分(或全部)因为元素的规模尺寸,布局,隐藏等改变而需要重新构建, 这就是重排。每个页面至少需要一次回流,就是在页面第一次加载的时候。

2、怎么触发Reflow

任何页面布局和几何属性的改变都会触发重排,比如:

三、Repaint 重绘

1、定义

当盒子的位置、大小以及其他属性,例如颜色、字体大小等都确定下来之后,浏览器便把这些原色都按照各自的特性绘制一遍,将内容呈现在页面上。

重绘是指一个元素外观的改变所触发的浏览器行为,浏览器会根据元素的新属性重新绘制,使元素呈现新的外观。

2、怎么触发Repaint

改变元素外观属性。如:color,background-color等

注意:重排必定会引发重绘,但重绘不一定会引发重排。

四、怎么避免重排和重绘

重排和重绘都会影响网页加载性能。应该尽量避免重排和重绘,特别是重排,常见做法如下:

上一篇 下一篇

猜你喜欢

热点阅读