回流
当 Render Tree
中部分或全部元素的尺寸,结构,或某些属性发生改变时,浏览器重新渲染文档的过程称为回流。
下面的内容会导致回流
页面首次渲染
浏览器窗口大小发生改变
元素尺寸,位置,内容,或字体大小发生改变
添加或删除 BOM元素
激活CSS
伪类
重绘
当页面中元素样式的改变并不影响它存在文档流的位置时,例如color
,background
,visibility
等,浏览器会将新样式
赋予元素并重新绘制。
如何减少回流和重绘的次数
CSS
避免使用table
布局
尽可能在DOM末端改变class
避免使用多层内联样式
动画效果应用定位
javascript
避免频繁操作样式,最好一次性重写style
属性,或者将样式定义为class
并一次性更改class
属性
避免频繁读取,如果要多次使用,就用一个变量缓存
可以先为元素设置display:none
,操作结束后再显示