3 回答
TA贡献1830条经验 获得超3个赞
DOM布局发生更改时,就会发生重排。回流在计算上非常昂贵,因为必须再次计算页面元素的尺寸和位置,然后才能重新绘制屏幕。
可能导致回流的示例
for (let i = 1; i <= 100; i++ {
const newEle = document.createElement('p');
newEle.textContent = 'newly created paragraph element';
document.body.appendChild(newEle);
}
上面的代码效率很低,每个附加的新段落元素都会导致100个重排过程。
您可以使用以下方法缓解此计算压力大的过程 .createDocumentFragment()
const docFrag = document.createDocumentFragment();
for (let i = 1; i <= 100; i++ {
const newEle = document.createElement('p');
newEle.textContent = 'newly created paragraph element';
docFrag.appendChild(newEle);
}
document.body.appendChild(docFrag);
上面的代码现在将只使用重排过程1x来创建100个新的段落元素。
重绘只是监视器上像素的变化,同时还要加重它的两个弊端,因为重排在其过程中包括重绘。
添加回答
举报