如何减少浏览器的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 相关文章推荐
js每次Title显示不同的名言
Sep 25 Javascript
Javascript 通过json自动生成Dom的代码
Apr 01 Javascript
轻松学习jQuery插件EasyUI EasyUI实现拖动基本操作
Nov 30 Javascript
JavaScript的==运算详解
Jul 20 Javascript
Vuejs第十二篇之动态组件全面解析
Sep 09 Javascript
js 判断附件后缀的简单实现方法
Oct 11 Javascript
百度地图去掉marker覆盖物或者去掉maker的label文字方法
Jan 26 Javascript
javascript中函数的写法实例代码详解
Oct 28 Javascript
微信小程序image图片加载完成监听
Aug 31 Javascript
js实现QQ邮箱邮件拖拽删除功能
Aug 27 Javascript
Vue循环中多个input绑定指定v-model实例
Aug 31 Javascript
uniapp开发小程序实现滑动页面控制元素的显示和隐藏效果
Dec 10 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构造方法中析构方法在继承中的表现
2016/04/12 PHP
PHP生成唯一ID之SnowFlake算法
2016/12/17 PHP
THINKPHP截取中文字符串函数实例代码
2017/03/20 PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
2017/09/20 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
Jquery升级新版本后选择器的语法问题
2010/06/02 Javascript
基于jquery的无刷新分页技术
2011/06/11 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
js判读浏览器是否支持html5的canvas的代码
2013/11/18 Javascript
javascript 实现 原路返回
2015/01/21 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
Js查找字符串中出现次数最多的字符及个数实例解析
2016/09/05 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
javascript 中iframe高度自适应(同域)实例详解
2017/05/16 Javascript
vue 巧用过渡效果(小结)
2018/09/22 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
微信小程序换肤功能实现代码(思路详解)
2020/08/25 Javascript
详解Python中break语句的用法
2015/05/14 Python
对python创建及引用动态变量名的示例讲解
2018/11/10 Python
对Python 语音识别框架详解
2018/12/24 Python
python变量赋值方法(可变与不可变)
2019/01/12 Python
python打造爬虫代理池过程解析
2019/08/15 Python
python中利用numpy.array()实现俩个数值列表的对应相加方法
2019/08/26 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
python中re模块知识点总结
2021/01/17 Python
匈牙利超级网上商店和优惠:Alza.hu
2019/12/17 全球购物
PyQt 如何创建自定义QWidget
2021/03/24 Python
个人自我评价和职业目标
2014/01/24 职场文书
初一家长会邀请函
2014/01/31 职场文书
《狮子和兔子》教学反思
2014/03/02 职场文书
中药专业自荐信范文
2014/03/18 职场文书
支部书记四风问题自我剖析材料
2014/09/29 职场文书
医生个人年度总结
2015/02/28 职场文书
解决mysql模糊查询索引失效问题的几种方法
2021/06/18 MySQL
python not运算符的实例用法
2021/06/30 Python
Windows server 2012 NTP时间同步的实现
2022/06/25 Servers