### 回流
#### 1.什么是回流(重排)
~~~
1.元素的大小或者显示隐藏受到了修改
2.导致其他DOM的大小或者位置也受到了影响
3.浏览器需要重新计算元素的位置和大小,这个过程叫做回流或重排
~~~
#### 2.什么是重绘
~~~
1.DOM的样式受到了修改,并且没有修改大小,隐藏,只改变了外观,风格,不影响布局
2.浏览器不需要计算大小和位置
~~~
#### 总结三点:
~~~
1.重排(回流):改变了DOM的大小,位置,导致浏览器重新计算了元素的几何和位置
2.重绘:只改变了元素的外观和风格,不影响布局
3.回流必定引起重绘,重绘不一定引起回流
~~~
#### 怎样会造成重排(回流)
~~~
1.添加或删除dom
2.元素尺寸改变,margin,padding,width,height,border都会引起回流
3.浏览器窗口尺寸改变,resize事件发生时
4.计算offsetWidth和offsetHeight等dom几何属性时
~~~
#### 浏览器的渲染队列
1.浏览器渲染队列机制:
~~~
div.style.left = "10px";
div.style.top = "10px";
div.style.width = "20px";
div.style.height = "20px";
~~~
以上代码执行了四次,但是浏览器只触发了一次重绘(重排),因为浏览器存在一个渲染队列机制
2.当每次进行修改后计算该属性,则会导致多次重排(重绘)
~~~
div.style.left = "10px";
console.log(div.offsetLeft);
div.style.top = "10px";
console.log(div.offsetTop);
div.style.width = "20px";
console.log(div.offsetWidth);
div.style.height = "20px";
console.log(div.offsetHeight);
~~~
#### 通过减少回流优化性能
~~~
1.尽量减少对dom的添加删除操作
2.发挥浏览器的渲染队列功能,将读写样式分离操作
3.采用文档碎片fragment的形式,在内存中操作dom,操作完成之后再添加到文档中,vue就是这样操作的
~~~
- 空白目录
- 1. css选择器
- 1.1 基础选择器
- 1.2 伪类
- 1.3 first-child与:first-of-type的区别
- 1.4 nth-child(:not())与nth-of-type(:not())
- 1.5 属性选择器
- 2. html标签分类&css样式继承
- 2.1 html标签分类
- 2.2 样式继承
- 2.3 font
- 3. css动画
- 1. transition
- 2. animation
- 4. 布局位置方面
- 4.1 实现图片左右垂直居中
- 4.2 父元素中第一个子元素margin-top无效问题
- 4.3 position定位
- 5. 关于浮动
- 5.1 浮动的呈现效果
- 5.2 清除浮动的三种方式
- 5.3 inline-block与block浮动的对比
- 6. 弹性布局
- 7. border
- 7.1 添加border不影响盒子大小的三种方式
- 7.2 利用border画三角形
- 8. css预处理--sass
- 8.1 变量
- 8.2 嵌套
- 8.3 导入SASS文件
- 8.4 静默注释
- 8.5 混合器@mixin
- 8.6 继承@extend
- 8.7.function
- ! element语法
- 9. grid 布局
- 10. filedset 使用
- css面试题
- 1.题目汇总
- 2.回流(重排)和重绘
- 3.浏览器渲染流程
- 4.水平垂直居中
- 5.flex布局