javascript - 禁用浏览器的重排\重画

标签 javascript html performance dom reflow

我正在向 DOM 添加相当多的元素。我不希望浏览器在添加所有元素之前尝试重绘页面。

这可能吗?

最佳答案

只需创建一个新元素,将所有元素添加到该元素,然后最后将该元素添加到 DOM,这样它只重绘一次。

在不向 html 添加额外中间节点的情况下执行此操作的一种方法是使用 DocumentFragment

const numbers = document.getElementById("numbers");
const button = document.getElementById("button");

button.addEventListener("click", function() {
  const temp_holder = new DocumentFragment();
  for(let i = 1; i < 6; i++) {
    const li = document.createElement("li");
    li.textContent = i.toString();
    temp_holder.appendChild(li);
  }

  numbers.appendChild(temp_holder);
});
<ul id="numbers">
  <li>0</li>
</ul>
<button id="button" type="button">Add numbers</button>

关于javascript - 禁用浏览器的重排\重画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39817023/

相关文章:

javascript - 如何使用 jQuery 选择 child 和自己?

PHP - 解析 html 以从另一个 "a"标签内的 "a"标签检索 href

php - 在 PHP 中创建产品的 GridView

javascript - 在 HTML 表中搜索值并更改其 TD 值

javascript - 如何用Momentjs精确计算年龄?

javascript - 比较angularjs指令中的两个字段

javascript - MapBox获取Marker的div元素

performance - Grails - 在普通 Groovy 类中访问 Bean 的最佳方式

css - 大图像层在 chrome 中消失

performance - CPU访问是否与网卡不对称