Heim > Web-Frontend > CSS-Tutorial > Hauptteil

Entdecken Sie die Gemeinsamkeiten, Unterschiede und Anwendungsbereiche von Reflow und Redraw

王林
Freigeben: 2024-01-26 09:39:06
Original
916 Leute haben es durchsucht

Entdecken Sie die Gemeinsamkeiten, Unterschiede und Anwendungsbereiche von Reflow und Redraw

Ausführliche Diskussion von Reflow und Repaint: Unterschiede und Anwendungsszenarien, spezifische Codebeispiele sind erforderlich

Vorwort:

In der Front-End-Entwicklung sind Reflow (Reflow) und Repaint (Repaint) gängige Konzepte. Sie stehen in engem Zusammenhang mit der Seitendarstellung und sind für die Leistungsoptimierung von entscheidender Bedeutung. In diesem Artikel werden die Unterschiede zwischen Reflow und Redraw sowie deren Anwendungsszenarien erläutert und spezifische Codebeispiele aufgeführt.

1. Was ist Reflow?

Reflow bezieht sich auf den Prozess, bei dem der Browser geänderte Elemente neu berechnet und zeichnet. Wenn wir den Stil eines Elements ändern (z. B. Breite, Höhe und Position ändern), berechnet der Browser die geometrischen Eigenschaften des Elements und seiner Unterelemente neu und rendert die Seite neu. Dieser Vorgang ist relativ leistungsintensiv.

Reflow verursacht die Berechnung und das Layout anderer Elemente, daher ist der Aufwand viel größer als beim Neuzeichnen. Oft müssen wir häufige Reflows vermeiden, um die Seitenleistung zu verbessern.

2. Was ist Repaint?

Neuzeichnen bedeutet, dass der Browser die Seite basierend auf den Stilinformationen des Elements neu zeichnet, die geometrischen Eigenschaften des Elements jedoch nicht ändert. Wenn wir nur die Farbe, den Hintergrund und andere Stile des Elements ändern, die nichts mit den geometrischen Eigenschaften zu tun haben, führt der Browser nur einen Neuzeichnungsvorgang ohne Umfließen durch.

Das Neuzeichnen ist kostengünstiger, da nur der bereits angezeigte Teil neu gezeichnet werden muss und das Layout anderer Elemente nicht beeinträchtigt wird. Aber zu viel Neuzeichnen hat immer noch einen gewissen Einfluss auf die Leistung.

3. Der Unterschied zwischen Reflow und Redraw

Der größte Unterschied zwischen Reflow und Redraw ist der Leistungsaufwand und der Umfang der Auswirkungen.

Reflow ist teuer: Reflow führt dazu, dass der Browser Elemente neu berechnet und rendert, und die Auswirkung erstreckt sich normalerweise auf die gesamte Seite oder einen Teil davon. Wenn der Reflow-Vorgang häufig ausgelöst wird, verringert sich die Renderleistung der Seite oder die Seite friert sogar ein.

Die Kosten für das Neuzeichnen sind geringer: Beim Neuzeichnen werden nur die Elemente mit geänderten Stilen neu gezeichnet und es kommt nicht zu einer Neuberechnung und dem Layout der Seite. Daher ist der Aufwand für das Neuzeichnen relativ gering und hat nur geringe Auswirkungen auf die Leistung der Seite.

4. Anwendungsszenarien für Reflow und Redraw

  1. Reflow-Vorgänge reduzieren: Während der Entwicklung sollten Sie versuchen, häufige Auslöser von Reflow-Vorgängen zu vermeiden. Sie können das Auftreten von Reflow durch die folgenden Punkte reduzieren:
  • Verwenden Sie das Positionsattribut, um oben/links und andere Operationen zu ersetzen, die die Position des Elements ändern. Sie können stattdessen transform: Translate() verwenden, um das Element zu verschieben. Das Transformationsattribut führt nur zum Neuzeichnen, ohne einen Reflow auszulösen.
  • Vermeiden Sie die Manipulation von Stilattributen in einer Schleife. Sie können die Anzahl der Reflows durch Batch-Änderung von Stilen reduzieren.
  • Um zu vermeiden, dass beim Laden der Seite Informationen zum Elementlayout abgerufen werden, können Sie die asynchrone Methode verwenden, um Layoutinformationen abzurufen.

Spezifische Codebeispiele:

// 错误示例,频繁触发回流
for (let i = 0; i < 100; i++) {
  element.style.width = '200px';
  element.style.height = '200px';
  element.style.left = i * 10 + 'px';
}

// 正确示例,减少回流
element.style.position = 'absolute';
for (let i = 0; i < 100; i++) {
  element.style.transform = 'translateX(' + i * 10 + 'px)';
}
Nach dem Login kopieren
  1. Vernünftiger Einsatz von Neuzeichnungsvorgängen: In einigen Fällen, in denen sich nur der Stil ändert, kann Neuzeichnen zur Optimierung der Leistung verwendet werden.

Spezifisches Codebeispiel:

// 错误示例,频繁触发回流
for (let i = 0; i < 100; i++) {
  element.style.backgroundColor = 'red';
}

// 正确示例,只触发重绘
for (let i = 0; i < 100; i++) {
  element.style.color = 'red';
}
Nach dem Login kopieren

Zusammenfassung:

Reflow und Neuzeichnen sind gängige Konzepte in der Front-End-Entwicklung und für die Optimierung der Seitenleistung von entscheidender Bedeutung. Der Reflow-Overhead ist größer und der Redraw-Overhead ist kleiner. Während der Entwicklung sollten Sie versuchen, das häufige Auslösen von Reflow-Vorgängen zu vermeiden und Neuzeichnungsvorgänge rational zu nutzen, um den Leistungsaufwand zu reduzieren. Das Obige ist eine ausführliche Diskussion der Unterschiede und Anwendungsszenarien von Reflow und Neuzeichnen. Ich hoffe, dass es für die Front-End-Entwicklung hilfreich sein wird.

Referenz:

  • [Warum ist Reflow so langsam?](https://developers.google.com/web/fundamentals/performance/rendering/avoid-large-complex-layouts-and-layout-thrashing)

Das obige ist der detaillierte Inhalt vonEntdecken Sie die Gemeinsamkeiten, Unterschiede und Anwendungsbereiche von Reflow und Redraw. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!