Reflow tritt auf , wenn das DOM-Layout geändert wird. Reflow ist rechenintensiv, da Abmessungen und Positionen von Seitenelementen erneut berechnet werden müssen. Anschließend wird der Bildschirm neu gestrichen .
Beispiel für etwas, das einen Reflow verursacht
for (let i = 1; i <= 100; i++ {
const newEle = document.createElement('p');
newEle.textContent = 'newly created paragraph element';
document.body.appendChild(newEle);
}
Der obige Code ist sehr ineffizient und verursacht 100 Reflow-Prozesse für jedes neue angehängte Absatzelement.
Sie können diesen rechenintensiven Prozess mithilfe von abmildern .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);
Der obige Code verwendet jetzt stattdessen nur den Reflow-Prozess 1x für die Erstellung von 100 neuen Absatzelementen.
Repaint ist lediglich das Ändern von Pixeln auf dem Monitor, während es immer noch das geringere von zwei Übeln ist, da ein Reflow ein Repaint in seine Prozedur einbezieht.