如何减少浏览器的reflow和repaint


Posted in Javascript onFebruary 26, 2015

1.避免在document上直接进行频繁的DOM操作,如果确实需要可以采用off-document的方式进行,具体的方法包括但不完全包括以下几种:

(1). 先将元素从document中删除,完成修改后再把元素放回原来的位置
(2). 将元素的display设置为”none”,完成修改后再把display修改为原来的值
(3). 如果需要创建多个DOM节点,可以使用DocumentFragment创建完后一次性的加入document

2.集中修改样式

(1). 尽可能少的修改元素style上的属性
(2). 尽量通过修改className来修改样式
(3). 通过cssText属性来设置样式值

3. 缓存Layout属性值

对于Layout属性中非引用类型的值(数字型),如果需要多次访问则可以在一次访问时先存储到局部变量中,之后都使用局部变量,这样可以避免每次读取属性时造成浏览器的渲染。
var width = el.offsetWidth; var scrollLeft = el.scrollLeft;

4.设置元素的position为absolute或fixed

在元素的position为static和relative时,元素处于DOM树结构当中,当对元素的某个操作需要重新渲染时,浏览器会渲染整个页面。将元素的position设置为absolute和fixed可以使元素从DOM树结构中脱离出来独立的存在,而浏览器在需要渲染时只需要渲染该元素以及位于该元素下方的元素,从而在某种程度上缩短浏览器渲染时间,这在当今越来越多的Javascript动画方面尤其值得考虑。

以上就是个人总结的一些关于减少浏览器reflow和repaint的事项,希望大家能够喜欢。

Javascript 相关文章推荐
用 Javascript 验证表单(form)中多选框(checkbox)值
Sep 08 Javascript
js 数值项目的格式化函数代码
May 14 Javascript
document.getElementById的简写方式(获取id对象的简略写法)
Sep 10 Javascript
js清空表单数据的两种方式(遍历+reset)
Jul 18 Javascript
分享28款免费实用的 JQuery 图片和内容滑块插件
Dec 15 Javascript
简单理解Vue条件渲染
Dec 03 Javascript
Mongoose实现虚拟字段查询的方法详解
Aug 15 Javascript
详解Vue单元测试case写法
May 24 Javascript
Vue2.0 实现歌手列表滚动及右侧快速入口功能
Aug 08 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
May 16 Javascript
js实现简单进度条效果
Mar 25 Javascript
antd Select下拉菜单动态添加option里的内容操作
Nov 02 Javascript
详谈javascript中DOM的基本属性
Feb 26 #Javascript
jqueryUI里拖拽排序示例分析
Feb 26 #Javascript
Jquery的基本对象转换和文档加载用法实例
Feb 25 #Javascript
jQuery操作JSON的CRUD用法实例
Feb 25 #Javascript
javascript实现复选框超过限制即弹出警告框的方法
Feb 25 #Javascript
javascript获得当前的信息的一些常用命令
Feb 25 #Javascript
javascript实现图像循环明暗变化的方法
Feb 25 #Javascript
You might like
mysql时区问题
2008/03/26 PHP
php 时间计算问题小结
2009/01/04 PHP
PHP常用技巧总结(附函数代码)
2012/02/04 PHP
php模板原理讲解
2013/11/13 PHP
php抽象类和接口知识点整理总结
2019/08/02 PHP
25个好玩的JavaScript小游戏分享
2011/04/22 Javascript
jQuery+CSS 实现随滚动条增减的汽水瓶中的液体效果
2011/09/26 Javascript
js的表单操作 简单计算器
2011/12/29 Javascript
使用jquery mobile做幻灯播放效果实现步骤
2013/01/04 Javascript
windows系统下简单nodejs安装及环境配置
2013/01/08 NodeJs
ExtJS中文乱码之GBK格式编码解决方案及代码
2013/01/20 Javascript
你必须知道的Javascript知识点之"this指针"的应用
2013/04/23 Javascript
你必须知道的Javascript知识点之"字面量和对应类型"说明介绍
2013/04/23 Javascript
php显示当前文件所在的文件以及文件夹所有文件以树形展开
2013/12/13 Javascript
jquery实现经典的淡入淡出选项卡效果代码
2015/09/22 Javascript
jQuery双向列表选择器DIV模拟版
2016/11/01 Javascript
js时间控件只显示年月
2017/01/08 Javascript
关于vue v-for 循环问题(一行显示四个,每一行的最右边那个计算属性)
2018/09/04 Javascript
layui关闭层级、简单监听的实例
2019/09/06 Javascript
解决layer.open弹出框不能获取input框的值为空的问题
2019/09/10 Javascript
js简单的分页器插件代码实例
2019/09/11 Javascript
详解ES6 扩展运算符的使用与注意事项
2020/11/12 Javascript
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
[43:43]完美世界DOTA2联赛PWL S2 LBZS vs Forest 第三场 11.29
2020/12/02 DOTA
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
跟老齐学Python之赋值,简单也不简单
2014/09/24 Python
Python+Selenium自动化实现分页(pagination)处理
2017/03/31 Python
Python cookbook(数据结构与算法)通过公共键对字典列表排序算法示例
2018/03/15 Python
浅谈python累加求和+奇偶数求和_break_continue
2020/02/25 Python
使用Python三角函数公式计算三角形的夹角案例
2020/04/15 Python
用python读取xlsx文件
2020/12/17 Python
mysql有关权限的表都有哪几个
2015/04/22 面试题
公司爱心捐款倡议书
2014/05/14 职场文书
北京奥运会口号
2014/06/21 职场文书
小学推普周活动总结
2015/05/07 职场文书
记者节感言
2015/08/03 职场文书