如何减少浏览器的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 demo 基本技巧
Dec 18 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
Apr 01 Javascript
『jQuery』名称冲突使用noConflict方法解决
Apr 22 Javascript
javascript实用方法总结
Feb 06 Javascript
Angular.js与Bootstrap相结合实现表格分页代码
Apr 12 Javascript
js学习阶段总结(必看篇)
Jun 16 Javascript
微信小程序 开发工具快捷键整理
Oct 31 Javascript
创建简单的node服务器实例(分享)
Jun 23 Javascript
JavaScript函数中的this四种绑定形式
Aug 15 Javascript
vue的全局提示框组件实例代码
Feb 26 Javascript
vue点击当前路由高亮小案例
Sep 26 Javascript
Jquery 动态添加元素并添加点击事件实现过程解析
Oct 12 jQuery
详谈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 小心urldecode引发的SQL注入漏洞
2011/10/27 PHP
简单的php文件上传(实例)
2013/10/27 PHP
PHP精确计算功能示例
2016/11/29 PHP
JS 继承实例分析
2008/11/04 Javascript
JavaScript 申明函数的三种方法 每个函数就是一个对象(一)
2009/12/04 Javascript
十分钟打造AutoComplete自动完成效果代码
2009/12/26 Javascript
javascript 数组学习资料收集
2010/04/11 Javascript
jQuery 借助插件Lavalamp实现导航条动态美化效果
2013/09/27 Javascript
AspNet中使用JQuery boxy插件的确认框
2015/05/20 Javascript
用JavaScript实现页面重定向功能的教程
2015/06/04 Javascript
基于Arcgis for javascript实现百度地图ABCD marker的效果
2015/09/12 Javascript
跟我学习javascript的undefined与null
2015/11/17 Javascript
纯前端JavaScript实现Excel IO案例分享
2016/08/26 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
2018/01/03 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
微信小程序仿今日头条导航栏滚动解析
2019/08/20 Javascript
js实现圆形菜单选择器
2020/12/03 Javascript
python常见数制转换实例分析
2015/05/09 Python
Django 浅谈根据配置生成SQL语句的问题
2018/05/29 Python
Python数据可视化:泊松分布详解
2019/12/07 Python
Python二次规划和线性规划使用实例
2019/12/09 Python
CSS3中border-radius属性设定圆角的使用技巧
2016/05/10 HTML / CSS
波兰品牌内衣及泳装网上商店:Astratex.pl
2017/02/03 全球购物
美国著名的女性内衣零售商:Frederick’s of Hollywood
2018/02/24 全球购物
美国踏板车和轻便摩托车销售网站:Mega Motor Madness
2020/02/26 全球购物
会计与审计专业大专生求职信
2013/10/03 职场文书
施工资料员的岗位职责
2013/12/22 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
贵阳市党的群众路线教育实践活动党(工)委领导班子整改方案
2014/10/26 职场文书
2015试用期转正工作总结
2014/12/12 职场文书
2015年安全保卫工作总结
2015/05/14 职场文书
网聊搭讪开场白
2015/05/28 职场文书
青少年法制教育心得体会
2016/01/14 职场文书
django注册用邮箱发送验证码的实现
2021/04/18 Python
使用Golang的channel交叉打印两个数组的操作
2021/04/29 Golang
golang使用map实现去除重复数组
2022/04/14 Golang