如何减少浏览器的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 相关文章推荐
extjs 时间范围选择自动判断的实现代码
Jun 24 Javascript
Node.js中child_process实现多进程
Feb 03 Javascript
jquery判断单选按钮radio是否选中的方法
May 05 Javascript
轻量级javascript 框架Backbone使用指南
Jul 24 Javascript
jQuery实现滚动条滚动到子元素位置(方便定位)
Jan 08 Javascript
微信小程序实现聊天对话(文本、图片)功能
Jul 06 Javascript
JQuery常见节点操作实例分析
May 15 jQuery
微信小程序开发实现消息推送
Nov 18 Javascript
JS查找孩子节点简单示例
Jul 25 Javascript
微信小程序实现页面分享onShareAppMessage
Aug 12 Javascript
Vue分页效果与购物车功能
Dec 13 Javascript
JS函数参数的传递与同名参数实例分析
Mar 16 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
php5.2时间相差8小时
2007/01/15 PHP
PHP获取当前页面URL函数实例
2014/10/22 PHP
PHP基于反射机制实现插件的可插拔设计详解
2016/11/10 PHP
JS在textarea光标处插入文本的小例子
2013/03/22 Javascript
查找页面中所有类为test的结点的方法
2014/03/28 Javascript
js代码实现的加入收藏效果并兼容主流浏览器
2014/06/23 Javascript
javascript实现按回车键切换焦点
2015/02/09 Javascript
深入理解JavaScript系列(37):设计模式之享元模式详解
2015/03/04 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
js中利用cookie实现记住密码功能
2020/08/20 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
React Native中TabBarIOS的简单使用方法示例
2017/10/13 Javascript
jQuery中图片展示插件highslide.js的简单dom
2018/04/22 jQuery
微信小程序如何获取手机验证码
2018/11/04 Javascript
Vue开发中遇到的跨域问题及解决方法
2020/02/11 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
python读文件逐行处理的示例代码分享
2013/12/27 Python
Python开发WebService系列教程之REST,web.py,eurasia,Django
2014/06/30 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
Python实现的读写json文件功能示例
2018/06/05 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
Python画图实现同一结点多个柱状图的示例
2019/07/07 Python
Python如何根据时间序列数据作图
2020/05/12 Python
python 获取字典特定值对应的键的实现
2020/09/29 Python
写给老师的表扬信
2014/01/21 职场文书
施工质量承诺书范文
2014/05/30 职场文书
质量标语大全
2014/06/12 职场文书
财务会计实训报告
2014/11/05 职场文书
2014年人大工作总结
2014/12/10 职场文书
学生检讨书范文
2015/01/27 职场文书
责任书格式
2015/01/29 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书
公司晚宴祝酒词
2015/08/11 职场文书
PostgreSQL聚合函数介绍以及分组和排序
2022/04/12 PostgreSQL
golang定时器
2022/04/14 Golang
深入理解pytorch库的dockerfile
2022/06/10 Python