Vielleicht weiß jeder, dass die JS-Ausführung die Analyse und Darstellung des DOM-Baums blockiert. Blockiert also das Laden von CSS die Analyse und Darstellung des DOM-Baums? Lassen Sie es uns als Nächstes gemeinsam analysieren. Prinzipanalyse Warum also tritt das oben beschriebene Phänomen auf? Lassen Sie uns es anhand des Rendering-Prozesses des Browsers analysieren. Verschiedene Browser verwenden unterschiedliche Kernel, daher sind auch ihre Rendering-Prozesse unterschiedlich. Derzeit gibt es zwei Haupt WebKit-Rendering-Prozess Gecko-Rendering-Prozess Aus den beiden Flussdiagrammen oben können wir ersehen, dass der Browser-Rendering-Prozess wie folgt abläuft:
Aus dem Prozess können wir sehen
DOMContentLoaded Für Browser gibt es zwei Hauptereignisse zum Laden von Seiten: eines ist DOMContentLoaded und das andere ist onLoad. Zu onLoad gibt es nicht viel zu sagen. Es wird erst ausgelöst, nachdem alle Ressourcen der Seite geladen sind. Zu diesen Ressourcen gehören CSS, JS, Bilder, Videos usw. DOMContentLoaded wird, wie der Name schon sagt, ausgelöst, wenn der Inhalt der Seite analysiert wird. Wie wir oben besprochen haben, blockiert CSS die Dom-Darstellung und die JS-Ausführung, und JS blockiert die Dom-Analyse. Dann können wir davon ausgehen, dass
Testen wir zunächst den ersten Fall: <!DOCTYPE html> <html lang="de"> <Kopf> <title>CSS-Blockierung</title> <meta charset="UTF-8"> <meta name="viewport" content="width=Gerätebreite, Anfangsmaßstab=1"> <Skript> document.addEventListener('DOMContentLoaded', Funktion() { console.log('DOMContentLoaded'); })  </Skript> <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet"> </Kopf> <Text> </body> </html> Die experimentellen Ergebnisse sind wie folgt: Aus dem animierten Bild können wir erkennen, dass das Ereignis DOMContentLoaded ausgelöst wurde, bevor das CSS geladen wurde. Weil hinter dem CSS kein JS-Code steckt. Als nächstes testen wir den zweiten Fall. Er ist ganz einfach. Fügen Sie einfach eine Codezeile nach dem CSS hinzu. <!DOCTYPE html> <html lang="de"> <Kopf> <title>CSS-Blockierung</title> <meta charset="UTF-8"> <meta name="viewport" content="width=Gerätebreite, Anfangsmaßstab=1"> <Skript> document.addEventListener('DOMContentLoaded', Funktion() { console.log('DOMContentLoaded'); }) </Skript> <link href="https://cdn.bootcss.com/bootstrap/4.0.0-alpha.6/css/bootstrap.css" rel="stylesheet"> <Skript> console.log('Bin ich schon dran?'); </Skript> </Kopf> <Text> </body> </html> Wir können sehen, dass das Ereignis DOMContentLoaded erst ausgelöst wird, nachdem das Laden des CSS abgeschlossen ist. Daher können wir Folgendes schlussfolgern:
Zusammenfassen Aus dem oben Gesagten können wir folgende Schlussfolgerungen ziehen:
Um zu vermeiden, dass Benutzer lange Zeit einen weißen Bildschirm sehen, sollten wir die CSS-Ladegeschwindigkeit so weit wie möglich erhöhen, beispielsweise mithilfe der folgenden Methoden:
Dies ist das Ende dieses Artikels darüber, ob CSS die Seitendarstellung blockiert. Weitere Informationen dazu, wie CSS die Seitendarstellung blockiert, finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den verwandten Artikeln weiter unten. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen! |
<<: Mein CSS-Framework – base.css (Browser-Standardstil zurücksetzen)
>>: Details zu den Überwachungseigenschaften der Uhr in Vue
Inhaltsverzeichnis Vorwort Lua-Skript nignx.conf-...
Sperren in MySQL Sperren sind ein Mittel, um Ress...
Inhaltsverzeichnis 1.0 Einleitung 2.0 Docker-Inst...
1. px px ist die Abkürzung für Pixel, eine relati...
Es gibt zu viele Artikel über Webstandards zur We...
Cooper sprach über den visuellen Pfad des Benutze...
Inhaltsverzeichnis Vorwort: Ubuntu 18.04 ändert d...
Inhaltsverzeichnis Vorwort 1. DDL 1.1 Datenbankop...
In diesem Artikel wird der spezifische Code von J...
In diesem Artikelbeispiel wird der spezifische Co...
„Seiten-Screenshot“ ist eine Anforderung, die häu...
Angenommen, Taobao animiert die Leute zum Einkauf...
In diesem Artikelbeispiel wird der spezifische Co...
Häufig verwendete Anzeigebefehle für MySQL 1. Zei...
Problembeschreibung: Ich habe einen Desktop-Compu...