禁用浏览器的 reflow\redraw
Disable the browser's reflow\redraw
我正在向 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>
我正在向 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>