详解浏览器渲染页面过程

 更新时间:2017年02月09日 09:11:39   投稿:lqh  
这篇文章主要介绍了详解浏览器渲染页面过程的相关资料,需要的朋友可以参考下

详解浏览器渲染页面过程

1.解析HTML文件,创建DOM树

自上而下,遇到任何样式(link、style)与脚本(script)都会阻塞(外部样式不阻塞后续外部脚本的加载)。

2.解析CSS

优先级:浏览器默认设置<用户设置<外部样式<内联样式<HTML中的style样式;
特定级:id数*100+类或伪类数*10+tag名称*1

3.将CSS与DOM合并,构建渲染树(renderingtree)

DOM树与HTML一一对应,渲染树会忽略诸如head、display:none的元素

4.布局和绘制,重绘(repaint)和重排(reflow)

重排:若渲染树的一部分更新,且尺寸变化,就会发生重排;
重绘:部分节点需要更新,但不改变其他集合形状。如改变某个元素的颜色,就会发生重绘。 

附:

1.重绘和重排何时会发生:

(1)增加或删除DOM节点;
(2)display:none(重排并重绘);visibility:hidden(重排);
(3)移动页面中的元素;
(4)增加或修改样式;
(5)用户改变窗口大小,滚动页面等。

2.如何减少重绘和重排以提升页面性能:

(1)不要一个个修改属性,应通过一个class来修改

错误写法:div.style.width="50px";div.style.top="60px";
正确写法:div.className+=" modify";

(2)clone节点,在副本中修改,然后直接替换当前的节点;
(3)若要频繁获取计算后的样式,请暂存起来;
(4)降低受影响的节点:在页面顶部插入节点将影响后续所有节点。而绝对定位的元素改变会影响较少的元素;
(5)批量添加DOM:多个DOM插入或修改,应组成一个长的字符串后一次性放入DOM。使用innerHTML永远比DOM操作快。(特别注意:innerHTML不会执行字符串中的嵌入脚本,因此不会产生XSS漏洞)。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

相关文章

  • js数组的基本用法及数组根据下标(数值或字符)移除元素

    js数组的基本用法及数组根据下标(数值或字符)移除元素

    js数组的用法包括创建、取值赋值、添加以及根据下标(数值或字符)移除元素等等,在本文将为大家详细介绍下,感兴趣的朋友可以参考下
    2013-10-10
  • 微信小程序之下拉列表实现方法解析(附完整源码)

    微信小程序之下拉列表实现方法解析(附完整源码)

    这篇文章主要介绍了微信小程序之下拉列表实现方法解析(附完整源码),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • 几个有趣的Javascript Hack

    几个有趣的Javascript Hack

    在网上看到几个有意思的Javascript代码,和大家分享一下。直接将代码拷贝到IE中即可,注意代码为一样。不可分行
    2010-07-07
  • JavaScript滑移效果代码

    JavaScript滑移效果代码

    这里说的滑移其实就是减速效果,能根据设定的坐标平面移动。
    2008-09-09
  • JavaScript中双叹号(!!)作用示例介绍

    JavaScript中双叹号(!!)作用示例介绍

    这篇文章主要介绍了JavaScript中双叹号(!!)的作用,需要的朋友可以参考下
    2014-04-04
  • JS 网页彩蛋 实现代码

    JS 网页彩蛋 实现代码

    显示一定时间后消失,刷新之后清空变量值,重新开始记录键值。 程序的原理就是检测按键的键值,当达到预定条件时执行规定的函数。
    2009-09-09
  • Echarts中常用的参数总结及参数自定义示例代码

    Echarts中常用的参数总结及参数自定义示例代码

    Echarts中参数的配置功能很强大,对任何一项的配置都很细致,下面这篇文章主要给大家介绍了关于Echarts中常用的参数总结及参数自定义的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2023-02-02
  • 原生JS封装Ajax插件(同域、jsonp跨域)

    原生JS封装Ajax插件(同域、jsonp跨域)

    这篇文章主要为大家详细介绍了原生JS封装Ajax插件,为大家介绍不同域之间互相请求资源的跨域,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • JavaScript引用类型Function实例详解

    JavaScript引用类型Function实例详解

    这篇文章主要介绍了JavaScript引用类型Function,结合实例形式详细分析了javascript引用类型Function概念、定义、原理、相关使用技巧与操作注意事项,需要的朋友可以参考下
    2018-08-08
  • JavaScript输出斐波那契数列的实现方法

    JavaScript输出斐波那契数列的实现方法

    斐波那契数列来源于兔子繁殖问题,所以也叫兔子序列,下面这篇文章主要给大家介绍了关于JavaScript输出斐波那契数列的实现方法,需要的朋友可以参考下
    2021-06-06

最新评论