如何减少浏览器的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 相关文章推荐
网页的标准,IMG不支持onload标签怎么办
Jun 29 Javascript
基于jQuery的图片大小自动适应实现代码
Nov 17 Javascript
javascript 弹出层组件(升级版)
May 12 Javascript
JS按位非(~)运算符与~~运算符的理解分析
Jul 31 Javascript
js与jQuery 获取父窗、子窗的iframe
Dec 20 Javascript
javascript实现拖放效果
Dec 16 Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
Jun 08 Javascript
学习vue.js中class与style绑定
Dec 03 Javascript
AngularJS中重新加载当前路由页面的方法
Mar 09 Javascript
微信小程序遍历Echarts图表实现多个饼图
Apr 25 Javascript
微信小程序如何实现点击图片放大功能
Jan 21 Javascript
JavaScript Dom实现轮播图原理和实例
Feb 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
Cakephp 执行主要流程
2010/03/24 PHP
PHP代码网站如何防范SQL注入漏洞攻击建议分享
2012/03/01 PHP
php中使用addslashes函数报错问题的解决方法
2013/02/06 PHP
PHP中基于ts与nts版本- vc6和vc9编译版本的区别详解
2013/04/26 PHP
PHP借助phpmailer发送邮件
2015/05/11 PHP
学习php设计模式 php实现建造者模式
2015/12/07 PHP
简单谈谈 php 文件锁
2017/02/19 PHP
PHP示例演示发送邮件给某个邮箱
2019/04/03 PHP
Thinkphp框架+Layui实现图片/文件上传功能分析
2020/02/07 PHP
gearman中worker常驻后台,导致MySQL server has gone away的解决方法
2020/02/27 PHP
jQuery getJSON 处理json数据的代码
2010/07/26 Javascript
javascript对select标签的控制(option选项/select)
2013/01/31 Javascript
JavaScript实现生成GUID(全局统一标识符)
2014/09/05 Javascript
多种方式实现js图片预览
2016/12/12 Javascript
Javascript this 函数深入详解
2016/12/13 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
React事件处理的机制及原理
2018/12/03 Javascript
基于axios 的responseType类型的设置方法
2019/10/29 Javascript
vue v-for直接循环数字实例
2019/11/07 Javascript
redux处理异步action解决方案
2020/03/22 Javascript
Python中字符串对齐方法介绍
2015/05/21 Python
python如何派生内置不可变类型并修改实例化行为
2018/03/21 Python
Django Session和Cookie分别实现记住用户登录状态操作
2020/07/02 Python
英国时尚高尔夫服装购物网站:Trendy Golf
2020/01/10 全球购物
介绍一下gcc特性
2015/10/31 面试题
门卫工作岗位职责
2013/12/17 职场文书
《尊严》教学反思
2014/02/11 职场文书
社区居务公开实施方案
2014/03/27 职场文书
电话客服专员岗位职责
2014/06/28 职场文书
关于读书的活动方案
2014/08/14 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
欢送领导祝酒词
2015/08/12 职场文书
穷人该怎么创业?谨记以下几点
2019/07/11 职场文书
基于Python的EasyGUI学习实践
2021/05/07 Python
压缩Redis里的字符串大对象操作
2021/06/23 Redis
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang