前言
今天白天的时候我们一起学习了块级元素,晚上的时候本来想继续学习CSS,但是发现还是有一点累,所以我们还是来研究点大家都感兴趣的东西,前端优化。
什么是reflow?
这个单词字面意思就是回流,这里举一个例子:
我们这里有个dom树:
1 <p>
2 <span class="title"></span>
3 <label class="checkbox">
4 <input type="checkbox" value="足球" />
5 red
6 </label>
7 <label class="checkbox">
8 <input type="checkbox" value="篮球" />
9 black
10 </label>
11 <label class="checkbox">
12 <input type="checkbox" value="乒乓" />
13 english中文
14 </label>
15 </p>
我们如果删除了其中一个节点,比如第四行的节点,这棵树肯定不会就这么倒了,所以会形成一个新的dom树,这就是回流:
回流是指浏览器为了重新渲染部分或者全部的文档而重新计算文档中元素的位置和几何构造的过程。
因为回流可能导致整个dom树的重新构造,所以是性能的一大杀手
以下操作会引起回流:
① 改变窗口大小
② font-size大小改变
③ 增加或者移除样式表
④ 内容变化(input中输入文字会导致)
⑤ 激活CSS伪类(:hover)
⑥ 操作class属性,新增或者减少
⑦ js操作dom
⑧ offset相关属性计算
⑨ 设置style的值
......
reflow与repaint是减缓js的几大主要原因,尤其是reflow更是性能杀手,所以我们应该想法避免。
减少页面回流
① 一起变化
如果要改变一个元素的样式,可以将所有样式集中在一个class上面一次变化,而不是变化几次:
1 <style type="text/css">
2 .changeStyle { width: 100px; height: 100px; }
3 </style>
4 <script type="text/javascript">
5 $(document).ready(function () {
6 var el = $('id');
7 //1
8 el.css('width', '100px');
9 el.css('height', '100px');
10 //2
11 el.css({ 'width': '100px;', 'height': '100px;' });
12 //3
13 el.addClass('changeStyle');
14
15 });
16 </script>
以上几种做法,我这里弱弱的推荐第三种,避免第一种。
② 具有动画效果请使用absolute
因为absolute元素的改变对其它元素的回流影响不大,所以我们的动画效果的元素还是将他搞成absolute吧。
③ 避免使用表格布局(记住只是布局哦,我们数据还是应该用表格的)
④ 请绝对不要使用CSS表达式,性能杀手啊,特别是IE
⑤ 在最末改变元素
因为回流是自上而下的,所以下不及上,我们在最后面修改信息对全局影响越少。
⑥ 动画移动时候,要控制
比如我们拖动元素时候,我是在他x或者y坐标改变5px才操作,这样虽说降低了平滑度,但是对性能有提高。
结语
好了,今天就到这里啦,后面点我们再看看CSS中一些细节的地方。
分享到:
相关推荐
Web前端性能优化是提升网页用户体验和确保网站成功的关键因素之一。性能优化涉及多个方面,包括但不限于代码优化、资源加载策略、服务器配置等。本篇内容将深入探讨Web前端性能优化的思路与学习方法,结合WebQQ、QQ...
在Web前端面试中,重绘与重排(回流)的知识点是考核应聘者对HTML页面性能优化理解的重要方面。在面试过程中,面试官常常通过这部分内容来判断应聘者是否具备深入理解浏览器渲染机制的能力。 首先,了解什么是重绘...
- **减少DOM重绘和回流**:DOM的修改通常会引发浏览器的重绘(Repaint)和回流(Reflow)。重绘是指元素样式的改变,而不会影响周围元素的位置;回流则是指对DOM的修改导致了布局的变化。重绘和回流都会导致浏览器...
因此,移动端Web前端性能优化成为了关键。 #### 关键概念:16毫秒的优化 16毫秒的优化主要聚焦于提高移动Web应用的渲染速度,确保用户体验流畅。这个概念基于显示器的刷新频率,即大约每16.6毫秒刷新一次屏幕。...
HTML解析原理是Web前端开发中的核心概念,理解这一原理对于优化网页性能至关重要。浏览器的渲染过程涉及多个步骤,包括解析HTML、CSS、JavaScript以及处理图片等资源,其中关键环节是页面的渲染、重绘(repaint)和...
总之,Repaintless.css是前端开发者的利器,它通过优化CSS动画实现性能提升,让开发者在不牺牲用户体验的前提下,降低页面渲染的开销,从而打造更加流畅的Web应用。在追求视觉效果的同时,我们不能忽视性能优化,...
**使用场景:** 1. **`<article>`**: 用于表示文档、页面或者应用程序中的独立部分,这部分可以被独立分发或复用。例如,一篇博客文章、一个新闻报道或者论坛帖子。...为了优化性能,应该尽量减少回流...
作为一名网站开发 Web 前端工程师,对自己开发的网站项目应该尽可能地对其性能进行优化。本文将着重分析 JavaScript 的优化细节。 一、避免出现脚本失控 脚本失控基本上有以下四个方面的原因: 1. 在循环中执行了...
### 前端开发笔试题知识点解析 #### 1. HTML标签嵌套规则 - **题目**: 下面标签嵌套正确的是() - **选项**: - A. `<ul><p>赶集网</p></ul>` - B. `<ahref="#"><ahref="#">赶集网</a></a>` - C. `<dl><li>赶集...
理解并掌握这些技巧,能显著提升JavaScript代码的执行效率,减少对系统资源的消耗,从而优化Web应用的性能。在开发过程中,应当始终关注代码的效率,尤其是在处理大数据量或复杂逻辑时,良好的编程习惯和优化策略是...
上述知识点涉及前端开发的多个方面,包括但不限于:React和Vue的状态管理、JavaScript ES5和ES6的新特性、Web前端性能优化、Web安全、异步编程模型、JavaScript数组操作和函数式编程概念等。这些内容不仅适用于面试...
产生reflow和repaint(回流与重绘); - d. visibility:hidden;与display:none;两者没有本质上的区别; **答案解析**: - a. `display:none`会使元素完全从文档流中移除,不为其分配任何空间。 - b. `visibility:...
21. 如何最小化重绘(repaint)和回流(reflow) 可以使用缓存、避免使用 table 布局、避免使用 JavaScript 修改样式等方法来最小化重绘和回流。 22. Js 延迟加载的方式有哪些? JavaScript 延迟加载的方式有多种,如...
因此,本书中也会涉及到性能优化的技巧,比如如何批量操作节点以及如何减少DOM重绘和回流(reflow),这对于提升页面性能和响应速度是十分关键的。 最后,本书还可能会介绍一些高级的DOM操作技巧,例如使用DOM属性...
### JavaScript性能优化之创建文档碎片(document.createDocumentFragment) 在探讨`document.createDocumentFragment()`方法之前,我们首先需要理解浏览器在处理DOM(文档对象模型)节点插入时的基本行为。DOM是HTML...
这是因为每次修改DOM,浏览器都需要重新计算布局,即所谓的回流(reflow),以及可能的重绘(repaint),这都是非常消耗性能的操作。 因此,在处理大量数据时,推荐使用以下步骤来创建和添加元素: 1. 使用`...
在前端开发中,Vue.js是一个非常流行的MVVM框架,它的核心特性之一是使用虚拟DOM(Virtual DOM)来优化页面更新。为了理解Vue的diff算法,首先需要了解DOM(Document Object Model)的概念。 DOM是Web页面的结构...
4. **性能优化**:减少HTTP请求次数、使用雪碧图(sprites)、避免不必要的重绘(repaint)和回流(reflow)等,可以显著提升页面加载速度和用户体验。 #### 五、总结 通过上述内容的学习,我们可以了解到CSS不仅是一种...