如何减少浏览器的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 Discuz代码中的msn聊天小功能
May 25 Javascript
JQuery为textarea添加maxlength属性的代码
Apr 07 Javascript
JS获取后台Cookies值的小例子
Mar 04 Javascript
jQuery过滤选择器:not()方法使用介绍
Apr 20 Javascript
Javascript中的Prototype到底是什么
Feb 16 Javascript
JS调用打印机功能简单示例
Nov 28 Javascript
深入理解javascript函数参数与闭包
Dec 12 Javascript
基于javascript的异步编程实例详解
Apr 10 Javascript
简单实现jQuery上传图片显示预览功能
Jun 29 jQuery
五步轻松实现zTree的使用
Nov 01 Javascript
解决vue打包项目后刷新404的问题
Mar 06 Javascript
React Native使用fetch实现图片上传的示例代码
Mar 07 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
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
CodeIgniter扩展核心类实例详解
2016/01/20 PHP
php-msf源码详解
2017/12/25 PHP
PHP防止sql注入小技巧之sql预处理原理与实现方法分析
2019/12/13 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
关于this和self的使用说明
2010/08/01 Javascript
js getBoundingClientRect() 来获取页面元素的位置
2010/11/25 Javascript
js FLASH幻灯片字符串中有连接符&的处理方法
2012/03/01 Javascript
JavaScript中的运算符种类及其规则介绍
2013/09/26 Javascript
js实现键盘操作实现div的移动或改变的原理及代码
2014/06/23 Javascript
轻松学习Javascript闭包函数
2015/12/15 Javascript
JS实现根据文件字节数返回文件大小的方法
2016/08/02 Javascript
Vue的Eslint配置文件eslintrc.js说明与规则介绍
2020/02/03 Javascript
JSON获取属性值方法代码实例
2020/06/30 Javascript
谈谈node.js中的模块系统
2020/09/01 Javascript
[04:10]2018年度CS GO玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
Python中函数的多种格式和使用实例及小技巧
2015/04/13 Python
Python多线程threading和multiprocessing模块实例解析
2018/01/29 Python
Python何时应该使用Lambda函数
2019/07/02 Python
Python中PyQt5/PySide2的按钮控件使用实例
2019/08/17 Python
Selenium向iframe富文本框输入内容过程图解
2020/04/10 Python
美国存储和组织商店:The Container Store
2017/08/16 全球购物
印度尼西亚最大和最全面的网络商城:Blibli.com
2017/10/04 全球购物
德国团购网站:Groupon德国
2018/03/13 全球购物
英国在线药房:Chemist.co.uk
2019/03/26 全球购物
实习医生自我评价
2013/09/22 职场文书
高中生家长会演讲稿
2014/01/14 职场文书
药剂专业自荐信范文
2014/04/16 职场文书
小学班主任经验交流材料
2014/12/16 职场文书
公司表扬信格式
2015/05/04 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
2016年春季运动会广播稿
2015/08/19 职场文书
宝宝满月宴答谢词
2015/09/30 职场文书
详解MySQL InnoDB存储引擎的内存管理
2021/04/08 MySQL