如何减少浏览器的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库还是自己写代码?
Jan 28 Javascript
javascript 类型判断代码分析
Mar 28 Javascript
js文本框输入点回车触发确定兼容IE、FF等
Nov 19 Javascript
jQuery中使用data()方法读取HTML5自定义属性data-*实例
Apr 11 Javascript
基于jQuery实现仿51job城市选择功能实例代码
Mar 02 Javascript
jQuery验证插件validate使用详解
May 11 Javascript
js+html制作简单日历的方法
Jun 27 Javascript
node中modules.exports与exports导出的区别
Jun 08 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
Jan 19 Javascript
JavaScript遍历DOM元素的常见方式示例
Feb 16 Javascript
JavaScript实现简单的计算器
Jan 16 Javascript
html实现随机点名器的示例代码
Apr 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
php自定义urlencode,urldecode函数实例
2015/03/24 PHP
php结合redis高并发下发帖、发微博的实现方法
2016/12/15 PHP
Linux下 php7安装redis的方法
2018/11/01 PHP
简洁短小的 JavaScript IE 浏览器判定代码
2010/03/21 Javascript
Prototype源码浅析 String部分(一)之有关indexOf优化
2012/01/15 Javascript
自定义右键属性覆盖浏览器默认右键行为实现代码
2013/02/02 Javascript
js 限制input只能输入数字、字母和汉字等等
2013/12/18 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
JavaScript事件处理的方式(三种)
2016/04/26 Javascript
JS遍历对象属性的方法示例
2017/01/10 Javascript
Omi v1.0.2发布正式支持传递javascript表达式
2017/03/21 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
详解给Vue2路由导航钩子和axios拦截器做个封装
2018/04/10 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
Nodejs + sequelize 实现增删改查操作
2020/11/07 NodeJs
vue-calendar-component 封装多日期选择组件的实例代码
2020/12/04 Vue.js
[51:00]Secret vs VGJ.S 2018国际邀请赛淘汰赛BO3 第一场 8.24
2018/08/25 DOTA
python发布模块的步骤分享
2014/02/21 Python
Python实现正弦信号的时域波形和频谱图示例【基于matplotlib】
2018/05/04 Python
Python双向循环链表实现方法分析
2018/07/30 Python
flask框架url与重定向操作实例详解
2020/01/25 Python
基于Python实现简单学生管理系统
2020/07/24 Python
微信小程序之html5 canvas绘图并保存到系统相册
2019/06/20 HTML / CSS
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
New Balance英国官方网站:始于1906年,百年慢跑品牌
2016/12/07 全球购物
J.Crew官网:美国知名休闲服装品牌
2017/05/19 全球购物
Vans奥地利官方网站:美国原创极限运动潮牌
2018/09/30 全球购物
工商管理应届生求职信
2013/10/07 职场文书
《春笋》教学反思
2014/04/15 职场文书
海上钢琴师观后感
2015/06/03 职场文书
结婚幸福感言
2015/08/01 职场文书
2016父亲节感恩话语
2015/12/09 职场文书
小学三年级数学教学反思
2016/02/16 职场文书
【2·13】一图读懂中国无线电发展
2022/02/18 无线电
Hive常用日期格式转换语法
2022/06/25 数据库