DOM回流跟重绘问题
2015-08-17 15:14
274 查看
什么是DOM的回流
DOM回流(reflows)和DOM重绘(repaints)
回流:当页面上的结构发生改变,浏览器会从新的渲染我们的页面,回流是比较消耗性能的
回流产生的情况
1、添加或者删除可见的DOM元素;
2、元素位置改变;
3、元素尺寸改变——边距、填充、边框、宽度和高度
4、内容改变——比如文本改变或者图片大小改变而引起的计算值宽度和高度改变;
5、页面渲染初始化;
6、浏览器窗口尺寸改变——resize事件发生时;
什么是DOM重绘
重绘:当前元素的样式(背景颜色、字体颜色等)发生改变的时候,我们只需要把改变的元素重新的渲染一下即可
重绘对浏览器的性能影响较小,所以 一般不考虑
由于回流 对浏览器的影响比较大,所以我们一般是用文档碎片的方式去解决这个问题的,当我们需要给DOM中添加新的元素的时候,先将其放在一个容器中,然后统一添加,这样就只产生了一次回流
来自珠峰培训的学习经历
DOM回流(reflows)和DOM重绘(repaints)
回流:当页面上的结构发生改变,浏览器会从新的渲染我们的页面,回流是比较消耗性能的
回流产生的情况
1、添加或者删除可见的DOM元素;
2、元素位置改变;
3、元素尺寸改变——边距、填充、边框、宽度和高度
4、内容改变——比如文本改变或者图片大小改变而引起的计算值宽度和高度改变;
5、页面渲染初始化;
6、浏览器窗口尺寸改变——resize事件发生时;
什么是DOM重绘
重绘:当前元素的样式(背景颜色、字体颜色等)发生改变的时候,我们只需要把改变的元素重新的渲染一下即可
重绘对浏览器的性能影响较小,所以 一般不考虑
由于回流 对浏览器的影响比较大,所以我们一般是用文档碎片的方式去解决这个问题的,当我们需要给DOM中添加新的元素的时候,先将其放在一个容器中,然后统一添加,这样就只产生了一次回流
var frg = document.createDocumentFragment();//创建了一个文档碎片:相当于一个容器,把动态创建的li先放到容器中,最后一起添加到页面中(只引发一次回流) for (var i = 0; i < 10; i++) { var oLi = document.createElement("li"); oLi.onmouseover = function () { this.style.backgroundColor = "#22b909"; } oLi.onmouseout = function () { this.style.backgroundColor = ""; } frg.appendChild(oLi); } oUl.appendChild(frg);
来自珠峰培训的学习经历
相关文章推荐
- 一个0-1指派问题(附有LINGO)程序
- 大公司的Java面试题集
- Knockout.js Attr绑定
- 调用CreateCompatibleBitmap建立内存DC只有两种颜色的问题
- java 获取路径相关问题
- Specifically for VS to CMake/GYP
- 如何利用PL/SQL Developer图形化界面建库建表
- DWORD类型与16进制字符串之间的相互转换
- 从C的伪代码到汇编,动手实现objc_msgSend
- 打造数据库堡垒
- 修改select默认样式,兼容IE9
- 调用接口并获取放回json值
- HTML 列表
- Exchange 2016之Exchange Server 2016初体验
- 面向切面编程
- ats新手测试环境搭建
- 【精】iOS GCD 详解
- 数据库设计三大范式
- 使用HTML5 canvas 标签进行图片裁剪、旋转、缩放
- HDFS列式存储Parquet与行式存储(Avro)性能测试-Benchmark(hadoop, Spark, Scala)