其他分享
首页 > 其他分享> > 回流(reflow)与重绘(repaint)

回流(reflow)与重绘(repaint)

作者:互联网

介绍下回流(reflow)与重绘(repaint)


1.了解浏览器的渲染机制

  1. 浏览器采用流式布局模型。
  2. 首先浏览器会将HTML解析成DOM,把CSS解析成CSSOM,把CSSOM与DOM结合产生render tree。
  3. 有了render tree之后,我们知道了节点样式,然后浏览器会计算节点的位置,然后把节点绘制到页面上。

总结:回流一定会引起重绘,重绘不一定会引起回流。

2.回流

会导致回流的操作

3.重绘

会导致重绘的操作

4.性能影响

总结:回流的性能消耗要比重回大

5.避免性能影响

CSS:

JavaScript:

思考

使用绝对定位会引起回流么?

补充:documentFragment

DocumentFragment,文档片段接口

与document相比,最大的区别是DocumentFragment 不是真实 DOM 树的一部分,它的变化不会触发 DOM 树的重新渲染,且不会导致性能等问题。

例子

HTML

<ul id="list"></ul>

JavaScript

const list = document.querySelector('#list');
const fruits = ['Apple', 'Orange', 'Banana', 'Melon'];

const fragment = document.createDocumentFragment();

fruits.forEach(fruit => {
  const li = document.createElement('li');
  li.innerHTML = fruit;
  fragment.appendChild(li);
});

list.appendChild(fragment);

标签:repaint,浏览器,reflow,DOM,渲染,文档,回流,重绘
来源: https://blog.csdn.net/TiAmopanduola/article/details/123232568