Struktur der Hauptkomponente des Browsers
(Hauptkomponente des Browsers)
Rendering-Engine – Webkit und Gecko
Firefox verwendet Geoko, eine von Mozilla unabhängig entwickelte Rendering-Engine.
Sowohl Safari als auch Chrome verwenden Webkit. Webkit ist eine Open-Source-Rendering-Engine, die ursprünglich für die Linux-Plattform entwickelt und später von Apple auf Mac und Windows portiert wurde.
In diesem Artikel verwende ich zur Erläuterung hauptsächlich die Webkit-Rendering-Engine. Obwohl die von Webkit und Gecko verwendeten Begriffe leicht unterschiedlich sind, sind ihre Hauptprozesse im Wesentlichen dieselben.
(Webkit-Rendering-Engine-Prozess)
Kritischer Rendering-Pfad
Der kritische Rendering-Pfad bezieht sich auf den HTML-Code, den der Browser vom erhält Erstanfrage, CSS, Javascript und andere Ressourcen, und dann analysieren, den Baum erstellen, das Layout rendern, zeichnen und schließlich den gesamten Prozess auf der Schnittstelle präsentieren, die Kunden sehen können.
Der Rendering-Prozess des Browsers umfasst also hauptsächlich die folgenden Schritte:
HTML analysieren, um einen DOM-Baum zu generieren.
CSS analysieren, um einen CSSOM-Regelbaum zu generieren.
Fügen Sie den DOM-Baum und den CSSOM-Regelbaum zusammen, um einen Rendering-Baum zu generieren.
Durchlaufen Sie den Rendering-Baum, um das Layout zu starten und die Positions- und Größeninformationen jedes Knotens zu berechnen.
Zeichnen Sie jeden Knoten des Rendering-Baums auf den Bildschirm.
DOM-Baum erstellen
Wenn der Browser das HTML-Dokument von der Serverantwort empfängt, durchläuft er die Dokumentknoten und generiert einen DOM-Baum.
Es ist zu beachten, dass der DOM-Baum-Generierungsprozess durch die Ladeausführung von CSS und JS blockiert werden kann. Das Problem der Rendering-Blockierung wird weiter unten erörtert.
CSSOM-Regelbaum erstellen
Der Browser analysiert CSS-Dateien und generiert CSS-Regelbäume. Jede CSS-Datei wird in ein StyleSheet-Objekt analysiert und jedes Objekt enthält CSS-Regeln. CSS-Regelobjekte enthalten Selektor- und Deklarationsobjekte, die der CSS-Syntax und anderen Objekten entsprechen.
Rendering-Blockierung
Wenn der Browser auf ein Skript-Tag stößt, wird der DOM-Aufbau angehalten, bis das Skript die Ausführung abgeschlossen hat, und dann mit dem Aufbau des DOM fortfahren. Jedes Mal, wenn Sie ein JavaScript-Skript ausführen, wird der Aufbau des DOM-Baums ernsthaft blockiert. Wenn das JavaScript-Skript auch das CSSOM betreibt und das CSSOM nicht heruntergeladen und erstellt wurde, verzögert der Browser sogar die Ausführung des Skripts und den Build das DOM, bis der Download seines CSSOM abgeschlossen ist.
Daher ist die Position des Skript-Tags sehr wichtig. Bei der tatsächlichen Verwendung können Sie die folgenden zwei Prinzipien befolgen:
CSS-Priorität: In der Reihenfolge der Einführung stehen CSS-Ressourcen vor JavaScript-Ressourcen.
JS nachher: Normalerweise platzieren wir JS-Code am Ende der Seite, und JavaScript sollte die Konstruktion des DOM so wenig wie möglich beeinflussen.
Beim Parsen von HTML werden die neuen Elemente in den Dom-Baum eingefügt und gleichzeitig das CSS durchsucht, und dann werden die entsprechenden Stilregeln auf die Elemente angewendet in der Reihenfolge von rechts nach links gesucht.
Zum Beispiel: div p {font-size: 16px}, es wird zunächst nach allen p-Tags gesucht und ermittelt, ob sein übergeordnetes Tag ein div ist, bevor entschieden wird, ob dieser Stil zum Rendern verwendet werden soll.
Wenn wir normalerweise CSS schreiben, versuchen wir daher, ID und Klasse so oft wie möglich zu verwenden und sie niemals zu überladen.
Aufbau eines Rendering-Baums
Wir können einen Rendering-Baum über den DOM-Baum und den CSS-Regelbaum erstellen. Der Browser durchläuft zunächst jeden sichtbaren Knoten, beginnend beim Wurzelknoten des DOM-Baums. Suchen Sie für jeden sichtbaren Knoten die entsprechende CSS-Stilregel und wenden Sie sie an.
Nachdem der Rendering-Baum erstellt wurde, ist jeder Knoten ein sichtbarer Knoten und enthält seinen Inhalt und den Stil der entsprechenden Regel. Dies ist auch der größte Unterschied zwischen dem Rendering-Baum und dem DOM-Baum. Der Rendering-Baum wird zur Anzeige verwendet. Natürlich werden diese unsichtbaren Elemente beispielsweise nicht in diesem Baum angezeigt. Darüber hinaus werden Elemente mit Anzeige gleich „Keine“ nicht in diesem Baum angezeigt, aber Elemente mit Sichtbarkeit gleich „Ausgeblendet“ werden in diesem Baum angezeigt.
Baumlayout rendern
Die Layoutphase durchläuft den Wurzelknoten des Rendering-Baums und bestimmt dann die genaue Größe und Position jedes Knotenobjekts auf der Seite. Die Ausgabe der Layoutphase ist ein Boxmodell. Dadurch wird die genaue Position und Größe jedes Elements auf dem Bildschirm genau erfasst.
Rendering-Baumzeichnung
In der Zeichenphase wird der Rendering-Baum durchlaufen und die paint()-Methode des Renderers aufgerufen, um seinen Inhalt auf dem Bildschirm anzuzeigen. Die Rendering-Arbeit des Rendering-Baums wird von der UI-Backend-Komponente des Browsers abgeschlossen.
Umfließen und neu zeichnen:
Berechnen Sie entsprechend dem Rendering-Baum-Layout den CSS-Stil, d. h. die geometrischen Informationen wie die Größe und Position jedes Knotens auf der Seite. HTML hat standardmäßig ein flüssiges Layout. CSS und js unterbrechen dieses Layout und ändern das Erscheinungsbild, den Stil, die Größe und die Position des DOM. Zwei wichtige Konzepte sollten an dieser Stelle erwähnt werden: Replaint und Reflow.
replaint: Das Neuzeichnen eines Teils des Bildschirms hat keinen Einfluss auf das Gesamtlayout. Beispielsweise ändert sich die Hintergrundfarbe eines bestimmten CSS, aber die geometrische Größe und Position des Elements bleiben unverändert.
Reflow: Dies bedeutet, dass sich die geometrische Größe der Komponente geändert hat und wir den Rendering-Baum erneut überprüfen und berechnen müssen. Entweder ein Teil oder der gesamte Renderbaum hat sich geändert. Dies ist Reflow oder Layout.
Wir sollten also versuchen, Reflow und Replain so weit wie möglich zu reduzieren. Ich denke, dies ist einer der Gründe, warum Tabellenlayout heutzutage selten verwendet wird.
display:none löst einen Reflow aus. Seine Semantik besteht darin, das Element auszublenden, aber das Element belegt weiterhin den Layoutbereich. Daher wird „visibility :hidden“ nur ein Repaint auslösen, da keine Positionsänderung stattgefunden hat.
In einigen Fällen, z. B. beim Ändern des Stils eines Elements, führt der Browser nicht sofort einen Reflow oder Neuaufbau durch, sondern führt einen Stapel solcher Vorgänge durch. Dies wird auch als asynchroner Reflow bezeichnet oder Neulackierung.
In einigen Fällen, z. B. beim Ändern der Fenstergröße, beim Ändern der Standardschriftart der Seite usw. Bei diesen Vorgängen wird der Browser sofort neu gestartet.
Zusammenfassung
In diesem Artikel haben wir Schritt für Schritt etwas über den Browser-Rendering-Prozess gelernt. Wenn Sie Fragen zum Browser-Rendering-Prozess haben, geben Sie diese bitte an uns Feedback Wir kommunizieren gemeinsam, lernen gemeinsam und machen gemeinsam Fortschritte.
Verwandte Lektüre:
HTML-Sprung zu anderen Seiten in zwei Sekunden
So erstellen Sie ein temporäres QQ-Popup auf einer Webseite Dialogfeld
Was sind die Operationen von randlosen und randlosen Iframes
Wie verwende ich die Basis? Tag
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Browser-Rendering-Prozesses. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

HTML ist eine Sprache, mit der Webseiten erstellt, die Webseitenstruktur und -inhalt über Tags und Attribute definiert werden. 1) HTML organisiert die Dokumentstruktur über Tags, wie z. B.. 2) Der Browser analysiert HTML, um das DOM zu erstellen und die Webseite zu rendern. 3) Neue Merkmale von HTML5, wie z. B. Multimedia -Funktionen. 4) Zu den häufigen Fehlern gehören nicht abgestimmte Bezeichnungen und nicht geeignete Attributwerte. 5) Die Optimierungsvorschläge umfassen die Verwendung semantischer Tags und die Reduzierung der Dateigröße.

WebdevelopmentRelieSonHtml, CSS und JavaScript: 1) HtmlStructuresContent, 2) CSSstylesit und 3) JavaScriptaddssinteraktivität, Bildung von TheBasisofModerernwebexperiences.

Die Rolle von HTML besteht darin, die Struktur und den Inhalt einer Webseite durch Tags und Attribute zu definieren. 1. HTML organisiert Inhalte über Tags wie das Lesen und Verständnis. 2. Verwenden Sie semantische Tags wie usw., um die Zugänglichkeit und SEO zu verbessern. 3. Optimierung des HTML -Codes kann die Ladegeschwindigkeit und die Benutzererfahrung der Webseite verbessern.

HtmlisaspecifictypeofcodeFocusedonstructuringuringwebcontent, während "Code" breitincludesluages -ähnlichjavaScriptandpythonforfunctionality.1) htmldefineswebpageStructureStags.2) "Code" cometesaWiNrangeOfLanguagesForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForForfirsInsForfunctionNacts

HTML, CSS und JavaScript sind die drei Säulen der Webentwicklung. 1. HTML definiert die Webseitenstruktur und verwendet Tags wie z.

HTML definiert die Webstruktur, CSS ist für Stil und Layout verantwortlich, und JavaScript ergibt eine dynamische Interaktion. Die drei erfüllen ihre Aufgaben in der Webentwicklung und erstellen gemeinsam eine farbenfrohe Website.

HTML ist für Anfänger geeignet, da es einfach und leicht zu lernen ist und schnell Ergebnisse sehen kann. 1) Die Lernkurve von HTML ist glatt und leicht zu beginnen. 2) Beherrschen Sie einfach die grundlegenden Tags, um Webseiten zu erstellen. 3) hohe Flexibilität und kann in Kombination mit CSS und JavaScript verwendet werden. 4) Reiche Lernressourcen und moderne Tools unterstützen den Lernprozess.

AnexampleofaTartingTaginHtmlis, die, die starttagsaresesinginhtmlastheyinitiateElements, definetheirtypes, andarecrucialForstructuringwebpages und -konstruktionsthedoms.


Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows
Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

WebStorm-Mac-Version
Nützliche JavaScript-Entwicklungstools

SecLists
SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

Dreamweaver Mac
Visuelle Webentwicklungstools

Sicherer Prüfungsbrowser
Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.