如何减少浏览器的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 相关文章推荐
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
Jan 12 Javascript
javascript 快速排序函数代码
May 30 Javascript
自己动手实现jQuery Callbacks完整功能代码详解
Nov 25 Javascript
每天一篇javascript学习小结(基础知识)
Nov 10 Javascript
js仿微博实现统计字符和本地存储功能
Dec 22 Javascript
javascript实现一个简单的弹出窗
Feb 22 Javascript
基于javascript实现图片滑动效果
May 07 Javascript
jQuery mobile在页面加载时添加加载中效果 document.ready 和window.onload执行顺序比较
Jul 14 Javascript
深入理解Node.js中的进程管理
Mar 13 Javascript
vue favicon设置以及动态修改favicon的方法
Dec 21 Javascript
js+css3实现简单时钟特效
Sep 13 Javascript
微信小程序APP的事件绑定以及传递参数时的冒泡和捕获
Apr 19 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导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
Yii2使用自带的UploadedFile实现的文件上传
2016/06/20 PHP
Laravel5.5以下版本中如何自定义日志行为详解
2018/08/01 PHP
用Javascript做flash做的事..才完成的一个类.Auntion Action var 0.1
2007/02/23 Javascript
Script的加载方法小结
2011/01/12 Javascript
简约JS日历控件 实例代码
2013/07/12 Javascript
最精简的JavaScript实现鼠标拖动效果的方法
2015/05/11 Javascript
JavaScript实现点击按钮直接打印
2016/01/06 Javascript
Js的Array数组对象详解
2016/02/22 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
激动人心的 Angular HttpClient的源码解析
2017/07/10 Javascript
详细介绍RxJS在Angular中的应用
2017/09/23 Javascript
如何编写一个完整的Angular4 FormText 组件
2017/11/18 Javascript
npm 下载指定版本的组件方法
2018/05/17 Javascript
高效jQuery选择器的5个技巧实例分析
2019/11/26 jQuery
浅谈JavaScript节流和防抖函数
2020/08/25 Javascript
Python实现HTTP协议下的文件下载方法总结
2016/04/20 Python
python用Pygal如何生成漂亮的SVG图像详解
2017/02/10 Python
apache部署python程序出现503错误的解决方法
2017/07/24 Python
用python制作游戏外挂
2018/01/04 Python
python实现求最长回文子串长度
2018/01/22 Python
Python内置random模块生成随机数的方法
2019/05/31 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
python爬虫爬取淘宝商品比价(附淘宝反爬虫机制解决小办法)
2020/12/03 Python
Ajax请求总共有多少种Callback
2016/07/17 面试题
解决python 输出到csv 出现多空行的情况
2021/03/24 Python
迟到检讨书900字
2014/01/14 职场文书
经典导游欢迎词大全
2014/01/16 职场文书
优秀共产党员先进事迹
2014/01/27 职场文书
办公室秘书岗位职责范本
2014/02/11 职场文书
市场营销专业求职信
2014/06/17 职场文书
竞选学习委员演讲稿
2014/09/01 职场文书
可可西里观后感
2015/06/08 职场文书
白银帝国观后感
2015/06/17 职场文书
Python+pyaudio实现音频控制示例详解
2022/07/23 Python