百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>html5教程> 详解阅读器渲染流程
分享文章到:

详解阅读器渲染流程

发布时间:09/01 来源:未知 浏览: 关键词:

阅读器主要组件构造

1.png

(阅读器主要组件)

渲染引擎——webkit和Gecko

Firefox使用Geoko——Mozilla自主研发的渲染引擎。

Safari和Chrome都使用webkit。Webkit是一款开源渲染引擎,它原本是为linux平台研发的,后来由Apple移植到Mac及Windows上。

本文我主要以webkit渲染引擎来讲解,尽管webkit和Gecko使用的术语稍有不一样,他们的主要流程根本雷同。

2.png

(webkit渲染引擎流程)

关键渲染途径

关键渲染途径是指阅读器从最初接收恳求来的HTML、CSS、javascript等资源,然后解析、构建树、渲染规划、绘制,最后显现给客户能看到的界面这整个历程。

所以阅读器的渲染历程主要包罗以下几步:

解析HTML生成DOM树。

解析CSS生成CSSOM规则树。

将DOM树与CSSOM规则树合并在一起生成渲染树。

遍历渲染树开端规划,运算每个节点的位置大小信息。

将渲染树每个节点绘制到屏幕。

构建DOM树

当阅读器接收到效劳器响应来的HTML文档后,会遍历文档节点,生成DOM树。

需要留意的是,DOM树的生成历程中大概会被CSS和JS的加载施行堵塞。渲染堵塞问题下文会讲。

构建CSSOM规则树

阅读器解析CSS文件并生成CSS规则树,每个CSS文件都被剖析成一个StyleSheet对象,每个对象都包括CSS规则。CSS规则对象包括对应于CSS语法的选中器和声明对象乃至其他对象。

渲染堵塞

当阅读器碰到一个 script 标志时,DOM 构建将暂停,直至足本完成施行,然后连续构建DOM。每次去施行JavaScript足本都会严峻地堵塞DOM树的构建,假如JavaScript足本还操纵了CSSOM,而恰好这个CSSOM还没有下载和构建,阅读器乃至会延迟足本施行和构建DOM,直至完成其CSSOM的下载和构建。

所以,script 标签的位置很重要。实际使用时,可以遵照下面两个原则:

CSS 优先:引入次序上,CSS 资源先于 JavaScript 资源。
JS置后:我们平常把JS代码放到页面底部,且JavaScript 应尽量少影响 DOM 的构建。

当解析html的时候,会把新来的元素插入dom树里面,同时去查寻css,然后把对应的样式规则利用到元素上,查寻样式表是依照从右到左的次序去匹配的。

例如: div p {font-size: 16px},会先寻觅所有p标签并推断它的父标签可否为div之后才会决议要不要采纳这个样式停止渲染)。
所以,我们平常写CSS时,尽量用id和class,千万不要过渡层叠。

构建渲染树

通过DOM树和CSS规则树我们便可以构建渲染树。阅读器会先从DOM树的根节点开端遍历每个可见节点。对每个可见节点,寻到其适配的CSS样式规则并利用。

渲染树构建完成后,每个节点都是可见节点并且都含有其内容和对应规则的样式。这也是渲染树与DOM树的最大不同所在。渲染树是用于显示,那些不成见的元素当然就不会在这棵树中显现了,比如。除此之外,display等于none的也不会被显示在这棵树里头,但是visibility等于hidden的元素是会显示在这棵树里头的。

渲染树规划

规划阶段会从渲染树的根节点开端遍历,然后肯定每个节点对象在页面上确实切大小与位置,规划阶段的输出是一个盒子模型,它会准确地捕捉每个元素在屏幕内确实切位置与大小。

渲染树绘制

在绘制阶段,遍历渲染树,调取渲染器的paint()办法在屏幕上显示其内容。渲染树的绘制工作是由阅读器的UI后端组件完成的。

reflow与repaint:

按照渲染树规划,运算CSS样式,即每个节点在页面中的大小和位置等几何信息。HTML默许是流式规划的,CSS和js会打破这种规划,改动DOM的外不雅样式乃至大小和位置。这时就要提到两个重要概念:replaint和reflow。

replaint:屏幕的一部分重画,不影响团体规划,比方某个CSS的背风光变了,但元素的几何尺寸和位置不变。
reflow: 意味着元件的几何尺寸变了,我们需要从新验证并运算渲染树。是渲染树的一部分或全部发生了转变。这就是Reflow,或是Layout。

所以我们应当尽量减少reflow和replaint,我想这也是为什么此刻很少有用table规划的缘由之一。

display:none 会触发 reflow,visibility: hidden属性并不算是不成见属性,它的语义是潜藏元素,但元素依然占据着规划空间,它会被渲染成一个空框,所以visibility:hidden 只会触发 repaint,由于没有发生位置转变。

有些状况下,比方修改了元素的样式,阅读器并不会立即 reflow 或 repaint 一次,而是会把这样的操纵积累一批,然后做一次 reflow,这又叫异步 reflow 或增量异步 reflow。
有些状况下,比方 resize 窗口,改动了页面默许的字体等。关于这些操纵,阅读器会立刻停止 reflow。

小结

本文我们就阅读器渲染流程逐渐理解了一遍,信赖大家必然都有所新的收成,假如大家关于阅读器渲染流程还有任何疑问,欢迎反应,我们共同交流,共同学习,共同进步。

相关阅读:

html两秒跳转至其他页面

怎样做出在网页中弹出QQ暂时对话框

iframe的去边框和无边框是什么操纵方式

base标签需要怎样使用

以上就是详解阅读器渲染流程的具体内容,更多请关注百分百源码网其它相关文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有152人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板