前端性能优化-减少重绘
2016-04-22 18:42
375 查看
对网站进行性能优化,一个非常有效的方法就是减少浏览器对网页的重绘次数。
比如改动DOM的话要考虑改动的元素在DOM树中的深度。越深就越独立,对其他改动影响越小。而且如果要对DOM有多次操作的话,尽量合并到一次做完而不是多次。
例:在点击a元素的时候改动该元素的背景色、字体颜色、字体大小。
在该例中,我们用js对a元素的样式进行三次更改,会进行三次重绘。三次重绘会延长网页的加载时间。
优化方法:
把js的三次操作合并成一次操作。用js添加一个class给a元素,在该class中包含所有样式,这样就会把三次重绘变成一次重绘。
总结
网站性能优化的方式有很多种。虽然网页的重绘在轻量级的网站中影响并不是很大,但是在重量级的网站中,性能优化以及网页加载时间就显得尤为重要。网站性能不好,体验不佳,页面加载时间过长,带来的直接损失就是用户流失。所以减少浏览器对页面的重绘也是性能优化的重要方法之一。
本文笔记记录于《高性能HTML5》
关于重绘
在浏览器渲染引擎绘制完网页后,动态的更改DOM结构或CSS样式会引发浏览器页面的重绘。性能损耗的大小取决于动态改动范围的大小。如果是改动一个元素的背景颜色,那就只会引发这一个元素的重绘,但是如果是改动一个元素的宽高或者位置,那就会引发DOM树结构中大量的重绘,因为它影响了兄弟元素的排列。比如改动DOM的话要考虑改动的元素在DOM树中的深度。越深就越独立,对其他改动影响越小。而且如果要对DOM有多次操作的话,尽量合并到一次做完而不是多次。
例:在点击a元素的时候改动该元素的背景色、字体颜色、字体大小。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>代码示例1</title> </head> <body> <a href="#" id="click">点击</a> <script> var click=document.getElementById('click'); click.onclick=function() { click.style.background="red"; click.style.color="green"; click.style.fontSize="36px"; } </script> </body> </html>
在该例中,我们用js对a元素的样式进行三次更改,会进行三次重绘。三次重绘会延长网页的加载时间。
优化方法:
把js的三次操作合并成一次操作。用js添加一个class给a元素,在该class中包含所有样式,这样就会把三次重绘变成一次重绘。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>代码示例2</title> <style> .clickStyle { background: red; color: green; font-size: 36px; } </style> </head> <body> <a href="#" id="click">点击</a> <script> var click=document.getElementById('click'); click.onclick=function() { click.className="clickStyle"; } </script> </body> </html>
总结
网站性能优化的方式有很多种。虽然网页的重绘在轻量级的网站中影响并不是很大,但是在重量级的网站中,性能优化以及网页加载时间就显得尤为重要。网站性能不好,体验不佳,页面加载时间过长,带来的直接损失就是用户流失。所以减少浏览器对页面的重绘也是性能优化的重要方法之一。
本文笔记记录于《高性能HTML5》
相关文章推荐
- 深入理解PHP7内核之FAST_ZPP
- Web布局连载——两栏固定布局(五)
- [div+css]晒晒最新制作专题推广页模板
- html5 web数据存储
- SEO
- 盒子模型
- CSS选择器
- CSS样式优先权
- [css] line-height 百分比单位和数值单位的区别
- 异步流程控制:7 行代码学会 co 模块
- [译] React 入门
- Apple官网研究之使用Justify布局导航
- 关于前端的思考与感悟
- 如何优雅处理前端异常?
- 设计更快的网页(三):字体和 CSS 调整
- 纯CSS制作的新闻网站中的文章列表
- 10条影响CSS渲染速度的写法与使用建议第1/3页
- BS项目中的CSS架构_仅加载自己需要的CSS