美文网首页
浏览器渲染页面流程

浏览器渲染页面流程

作者: 铁木真丫丫丫 | 来源:发表于2017-06-04 09:32 被阅读16次

1.浏览器解析html源码,然后创建一个 DOM树。
在DOM树中,每一个HTML标签都有一个对应的节点,并且每一个文本也都会有一个对应的文本节点。DOM树的根节点就是 documentElement,对应的是html标签。

2.浏览器解析CSS代码,计算出最终的样式数据。
对CSS代码中非法的语法她会直接忽略掉。解析CSS的时候会按照如下顺序来定义优先级:浏览器默认设置 < 用户设置 < 外链样式 < 内联样式 < html中的style。

3.构建出DOM树,并且计算出样式数据后,下一步就是构建一个 渲染树(rendering tree)。渲染树和DOM树有点像,但是是有区别的。DOM树完全和html标签一一对应,但是渲染树会忽略掉不需要渲染的元素,比如head、display:none的元素等。而且一大段文本中的每一个行在渲染树中都是独立的一个节点。渲染树中的每一个节点都存储有对应的css属性。

4.一旦渲染树创建好了,浏览器就可以根据渲染树直接把页面绘制到屏幕上。

重绘和重排(repaints and reflows)

每个页面至少在初始化的时候会有一次重排操作。任何对渲染树的修改都有可能会导致下面两种操作:

1.重排就是渲染树的一部分必须要更新 并且节点的尺寸发生了变化。这就会触发重排操作。
2.重绘部分节点需要更新,但是没有改变他的集合形状,比如改变了背景颜色,这就会触发重绘。什么情况下会触发重绘或重排

下面任何操作都会触发重绘或者重排:

增加或删除DOM节点设置 display: none;(重排并重绘) 或visibility: hidden(只有重排)
移动页面中的元素
增加或者修改样式用户
改变窗口大小
滚动页面等

减少重绘和重排

1.不要一个一个地单独修改属性,最好通过一个classname来定义这些修改

// badvar left = 10, top = 10;
el.style.left = left + "px";
el.style.top = top + "px";
// better el.className += " theclassname";


2.把对节点的大量修改操作放在页面之外用 documentFragment来做修改clone 节点,在clone之后的节点中做修改,然后直接替换掉以前的节点通过 display: none 来隐藏节点(直接导致一次重排和重绘),做大量的修改,然后显示节点(又一次重排和重绘),总共只会有两次重排。
3.不要频繁获取计算后的样式。如果你需要使用计算后的样式,最好暂存起来而不是直接从DOM上读取。
4.总的来说,总是考虑到渲染树得存在,考虑到你的一次修改会导致多大的绘制操作。比如绝对定位元素的动画就不会影响其他大部分元素。

相关文章

  • 渲染的工作流程

    前端web页面的渲染流程 1、构建DOM与 CSSOM浏览器通过http请求,获得静态资源后,进行页面渲染时,构建...

  • 前端运行机制--页面渲染流程

    浏览器渲染页面的原理及流程 浏览器将域名通过网络通信从服务器拿到html文件后,如何渲染页面呢? 1.根据html...

  • web前端面试题@十三(浏览器渲染页面的原理及流程、call,a

    一、浏览器渲染页面的原理及流程 浏览器将域名通过网络通信从服务器拿到html文件后,如何渲染页面呢? 1.根据ht...

  • 浏览器渲染页面流程

    浏览器内核拿到内容后,渲染步骤大致可以分为以下几步: 解析HTML,构建DOM树 解析CSS,生成CSS规则树 合...

  • 浏览器渲染页面流程

    1.浏览器解析html源码,然后创建一个 DOM树。在DOM树中,每一个HTML标签都有一个对应的节点,并且每一个...

  • 浏览器渲染页面流程

    浏览器渲染页面的一般过程:1.浏览器解析html源码,然后创建一个 DOM树。在DOM树中,每一个HTML标签都有...

  • 浏览器是如何渲染页面的?

    浏览器页面渲染流程 浏览器从HTTP服务器获取html文档,到呈现页面给用户,会经过以下几个步骤: 1、解析文档构...

  • 页面的回流,重绘

    页面的回流,重绘 浏览器渲染页面的处理流程 浏览器把获取到的HTML代码解析成1个DOM树,HTML中的每个tag...

  • css的渲染原理

    一、浏览器是如何渲染和加载页面的 要搞懂这个可以从这个常规流程开始: 1、浏览器的下载顺序是从上到下,渲染的顺序也...

  • CSS 会阻塞 DOM 解析吗?

    浏览器的渲染 浏览器的渲染流程如下: 图:WebKit 主流程 图:Mozilla 的 Gecko 呈现引擎主流程...

网友评论

      本文标题:浏览器渲染页面流程

      本文链接:https://www.haomeiwen.com/subject/hnrvfxtx.html