如何减少浏览器的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 相关文章推荐
jquery的ajax()函数传值中文乱码解决方法介绍
Nov 08 Javascript
js里怎么取select标签里的值并修改
Dec 10 Javascript
jq选项卡鼠标延迟的插件实例
May 13 Javascript
node.js中的console.error方法使用说明
Dec 10 Javascript
jquery+CSS实现的水平布局多级网页菜单效果
Aug 24 Javascript
JavaScript如何动态创建table表格
Aug 02 Javascript
jQuery unbind()方法实例详解
Jan 19 Javascript
JS简单随机数生成方法
Sep 05 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
Dec 02 Javascript
JS动态遍历json中所有键值对的方法(不知道属性名的情况)
Dec 28 Javascript
jQuery使用JSONP实现跨域获取数据的三种方法详解
May 04 jQuery
vue快捷键与基础指令详解
Jun 01 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中的魔术方法总结和使用实例
2015/05/11 PHP
PHP与Web页面的交互示例详解二
2020/08/04 PHP
javascript 兼容FF的onmouseenter和onmouseleave的代码
2008/07/19 Javascript
jquery中实现简单的tabs插件功能的代码
2011/03/02 Javascript
表单切换,用回车键替换Tab健(不支持IE)
2011/07/20 Javascript
解析jQuery与其它js(Prototype)库兼容共存
2013/07/04 Javascript
jQuery学习笔记之toArray()
2014/06/09 Javascript
TypeError document.getElementById(...) is null错误原因
2015/05/18 Javascript
javascript实现列表滚动的方法
2015/07/30 Javascript
jquery模拟alert的弹窗插件
2015/07/31 Javascript
Bootstrap滚动监听(Scrollspy)插件详解
2016/04/26 Javascript
Bootstrap3制作图片轮播效果
2016/05/12 Javascript
动态生成的DOM不会触发onclick事件的原因及解决方法
2016/08/06 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
vue将时间戳转换成自定义时间格式的方法
2018/03/02 Javascript
Vue 使用计时器实现跑马灯效果的实例代码
2019/07/11 Javascript
vue使用video.js进行视频播放功能
2019/07/18 Javascript
[53:13]2014 DOTA2国际邀请赛中国区预选赛5.21 DT VS LGD-GAMING
2014/05/22 DOTA
python 提取文件的小程序
2009/07/29 Python
对于Python的Django框架使用的一些实用建议
2015/04/03 Python
Python Tkinter实现简易计算器功能
2018/01/30 Python
Python生成MD5值的两种方法实例分析
2019/04/26 Python
Python3.5字符串常用操作实例详解
2019/05/01 Python
简单了解Python matplotlib线的属性
2019/06/29 Python
解决Tensorflow2.0 tf.keras.Model.load_weights() 报错处理问题
2020/06/12 Python
大专生自荐信
2013/10/04 职场文书
成人高等教育毕业生自我鉴定
2013/10/22 职场文书
开办化妆品公司创业计划书
2013/12/26 职场文书
党校个人自我鉴定范文
2014/03/28 职场文书
公安民警正风肃纪剖析材料
2014/10/10 职场文书
清明节主题班会
2015/08/14 职场文书
2016年教师新年寄语
2015/08/18 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
社区结对共建协议书
2016/03/23 职场文书
浅析Python实现DFA算法
2021/06/26 Python
Win11 Beta 22621.601 和 22622.601今日发布 KB5017384修复内容汇总
2022/09/23 数码科技