Mejore el tiempo de carga inicial omitiendo la representación de Inhalt fuera de la pantalla.
, lanzada en Chromium 85, podría ser una de las nuevas propiedades CSS más impactantes para mejorar el rendimiento de carga de la página. Sichtbarkeit von Inhalten
permite al User-Agent omitir el trabajo de renderizado de un elemento, incluido el diseño y la pintura, hasta que Sein necesario. Debido a que se omite el procesamiento, si una gran parte de su contenido está fuera de la pantalla, aprovechar la Sichtbarkeit von Inhalten
hace que la carga inicial del Nutzername sea mucho más rápida. También permite interacciones más rápidas con el contenido en pantalla. Con buena pinta.
Soporte de Browser
Sichtbarkeit von Inhalten
basiert auf Grundelementen innerhalb der die CSS-Containment-Spezifikation. Während Sichtbarkeit von Inhalten
unterstützt derzeit nur Chromium 85 (und wird berücksichtigt "Es lohnt sich, einen Prototyp zu machen" für Firefox) wird die Containment-Spezifikation in unterstützt modernste Browser.
CSS-Eindämmung
Das Ziel clave y general de la contención de CSS es permitir mejoras en el rendimiento de la representación del contenido Netz al proporcionar vorhersehbare Isolation eines DOM-Bienenstocks vom Rest der Seite.
Básicamente, un desarrollador puede decirle a un navegador qué partes de la página están encapsuladas como un conjunto de contenido, lo que permite a los Browser razonar sobre el contenido sin necesidad de considerar el estado fuera del subárbol. Saber qué partes de contenido (subárboles) contienen contenido aislado significa que el navegador puede tomar decisiones de optimización para la representación de la página.
Es gibt vier Arten von CSS-Eindämmungjeweils ein potentieller Wert für die enthalten
CSS-Eigenschaft, die zu einer durch Leerzeichen getrennten Werteliste kombiniert werden kann:
Größe
: Die Größenbegrenzung eines Elements stellt sicher, dass die Box des Elements platziert werden kann, ohne dass die Nachkommen untersucht werden müssen. Dies bedeutet, dass wir möglicherweise das Design der Nachkommen überspringen können, wenn wir nur die Größe des Elements benötigen.Layout
: Designkonflikt bedeutet, dass Nachkommen das externe Design anderer Felder auf der Seite nicht beeinflussen. Auf diese Weise können wir möglicherweise das Design der Nachkommen überspringen, wenn wir nur andere Boxen entwerfen möchten.Stil
: Die Stilbegrenzung stellt sicher, dass Eigenschaften, die Auswirkungen auf mehr als ihre Nachkommen haben können, dem Element nicht entkommen (z. B. Zähler). Auf diese Weise können wir möglicherweise die Stilberechnung für Nachkommen überspringen, wenn wir nur Stile in anderen Elementen berechnen möchten.Farbe
: Durch die Eindämmung der Farbe wird sichergestellt, dass die Nachkommen des Behälterkastens nicht außerhalb der Grenzen angezeigt werden. Nichts kann das Objekt sichtbar überlaufen lassen, und wenn ein Objekt nicht auf dem Bildschirm angezeigt wird oder nicht sichtbar ist, sind auch seine Nachkommen nicht sichtbar. Auf diese Weise können wir das Malen der Nachkommen möglicherweise überspringen, wenn sich das Element außerhalb des Bildschirms befindet.
Überspringen Sie die Rendering-Arbeit mit Sichtbarkeit von Inhalten
Es kann schwierig sein zu bestimmen, welche Containment-Werte verwendet werden sollen, da Browseroptimierungen nur ausgelöst werden können, wenn ein geeigneter Satz angegeben wird. Sie können mit den Werten spielen, um zu sehen was am besten funktioniert, oder Sie können eine andere CSS-Eigenschaft verwenden, die aufgerufen wird Sichtbarkeit von Inhalten
das notwendige Containment automatisch anzuwenden. Sichtbarkeit von Inhalten
stellt sicher, dass Sie die höchsten Leistungssteigerungen erzielen, die der Browser als Entwickler mit minimalem Aufwand bieten kann.
Die Eigenschaft für die Sichtbarkeit von Inhalten akzeptiert jedoch mehrere Werte Wagen
Es ist dasjenige, das sofortige Leistungsverbesserungen bietet. Ein Gegenstand, der hat
Sichtbarkeit von Inhalten: auto
Gewinne Layout
, Stil
y Farbe
Eindämmung. Wenn das Element nicht auf dem Bildschirm angezeigt wird (und für den Benutzer nicht relevant ist, sind die relevanten Elemente diejenigen, deren Unterbaum den Fokus oder die Auswahl enthält), gewinnt es ebenfalls Größe
Eindämmung (und stoppt
Malerei
y
Test des Erfolgs
Sein Inhalt).
Was bedeutet das? Kurz gesagt, wenn sich das Element außerhalb des Bildschirms befindet, werden seine Nachkommen nicht gerendert. Der Browser ermittelt die Größe des Elements ohne Berücksichtigung seines Inhalts und stoppt dort. Der größte Teil des Renderings, wie z. B. das Layout und der Stil der Struktur des Elements, wird ignoriert.
Wenn sich das Element dem Ansichtsfenster nähert, fügt der Browser das nicht mehr hinzu Größe
Eindämmung und beginnt zu malen und den Inhalt des Artikels zu testen. Auf diese Weise können Rendering-Arbeiten rechtzeitig ausgeführt werden, damit der Benutzer sie sehen kann.
Ejemplo: un Blog de viajes
Ein Reiseblog enthält normalerweise eine Reihe von Geschichten mit einigen Bildern und beschreibendem Text. Dies passiert in einem typischen Browser, wenn Sie zu einem Reiseblog navigieren:
- Ein Teil der Seite wird zusammen mit den erforderlichen Ressourcen aus dem Internet heruntergeladen.
- Der Browser entwirft und verteilt den gesamten Inhalt der Seite, unabhängig davon, ob der Inhalt für den Benutzer sichtbar ist.
- Der Browser kehrt zu Schritt 1 zurück, bis die gesamte Seite und die Ressourcen heruntergeladen sind.
In Schritt 2 verarbeitet der Browser den gesamten Inhalt und sucht nach Änderungen. Aktualisieren Sie den Stil und das Layout neuer Elemente sowie Elemente, die sich möglicherweise aufgrund neuer Aktualisierungen geändert haben. Dies ist Rendering-Arbeit. Das braucht Zeit.
Überlegen Sie nun, was passiert, wenn Sie setzen Sichtbarkeit von Inhalten: auto
in jeder der einzelnen Blog-Geschichten. Der allgemeine Zyklus ist der gleiche: Der Browser lädt Fragmente der Seite herunter und zeigt sie an. Der Unterschied besteht jedoch in der Menge an Arbeit, die Sie in Schritt 2 erledigen.
Mit der Sichtbarkeit von Inhalten werden Stil und Layout auf alle Inhalte angewendet, die derzeit für den Benutzer sichtbar sind (auf dem Bildschirm angezeigt werden). Wenn Sie die Story jedoch vollständig außerhalb des Bildschirms rendern, überspringt der Browser die Rendering-Arbeit und wendet nur Stil und Layout auf die Box des Elements an.
Die Leistung beim Laden dieser Seite wäre so, als ob sie vollständige Storys auf dem Bildschirm und leere Kästchen für jede der Storys außerhalb des Bildschirms enthalten würde. Das funktioniert viel besser mit erwartete Reduzierung von 50% oder mehr Kosten für die Wiedergabe. In unserem Beispiel sehen wir einen Impuls von a 232 ms Zeit geben für a
30 ms Zeit rendern. Das ist ein 7 mal Leistung verbessern.
Was ist die Arbeit, die Sie tun müssen, um diese Vorteile zu erhalten? Zunächst teilen wir den Inhalt in Abschnitte ein:
Dann wenden wir die folgende Stilregel auf Abschnitte an:
.story {
Sichtbarkeit von Inhalten: Wagen;
enthalten-intrinsische-Größe: 1000px;
}
Beachten Sie, dass beim Ein- und Ausblenden von Inhalten das Rendern nach Bedarf gestartet und gestoppt wird. Dies bedeutet jedoch nicht, dass der Browser denselben Inhalt immer wieder rendern und neu rendern muss, da die Rendering-Arbeit nach Möglichkeit gespeichert wird.
Geben Sie die natürliche Größe eines Elements mit an enthalten-intrinsische-Größe
Um die potenziellen Vorteile von zu realisieren Sichtbarkeit von Inhalten
muss der Browser die Größenbegrenzung anwenden, um sicherzustellen, dass die Renderergebnisse des Inhalts die Größe des Elements in keiner Weise beeinflussen. Dies bedeutet, dass das Element als leer gerendert wird. Wenn das Element in einem regulären Blocklayout keine bestimmte Höhe hat, hat es eine Höhe von 0.
Dies ist möglicherweise nicht ideal, da sich die Größe der Bildlaufleiste je nach Story mit einer Höhe ungleich Null ändert.
Glücklicherweise bietet CSS eine weitere Eigenschaft: enthalten-intrinsische-Größe
, die effektiv die natürliche Größe des Elements angibt wenn das Element von Größenkonflikten betroffen ist. In unserem Beispiel setzen wir es auf 1000px
als Schätzung der Höhe und Breite der Abschnitte.
Dies bedeutet, dass es mit einem einzigen untergeordneten Element mit der Dimension "Eigengröße" gerendert wird, um sicherzustellen, dass Ihre nicht dimensionierten Divs immer noch Platz beanspruchen.
enthalten-intrinsische-Größe
fungiert als Platzhaltergröße anstelle von gerendertem Inhalt.
Inhalt ausblenden mit Sichtbarkeit von Inhalten: versteckt
¿Qué sucede si desea mantener el contenido sin procesar independientemente de si está o no en pantalla, mientras aprovecha los beneficios del estado de procesamiento en Zwischenspeicher? Entrar:
Sichtbarkeit von Inhalten: versteckt
.
das Sichtbarkeit von Inhalten: versteckt
Die Eigenschaft bietet Ihnen dieselben Vorteile für Rohinhalt und zwischengespeicherten Status wie Sichtbarkeit von Inhalten: auto
tut außerhalb des Bildschirms. Im Gegensatz zu Wagen
wird das Rendern nicht automatisch auf dem Bildschirm gestartet.
Dies gibt Ihnen mehr Kontrolle, sodass Sie den Inhalt eines Elements ausblenden und dann schnell anzeigen können.
Vergleichen Sie es mit anderen gängigen Methoden zum Ausblenden von Elementinhalten:
Anzeige: keine
- Blendet das Objekt aus und zerstört seinen Rendering-Status. Dies bedeutet, dass das Anzeigen des Elements genauso teuer ist wie das Rendern eines neuen Elements mit demselben Inhalt.Sichtbarkeit: versteckt
- Blendet das Element aus und behält seinen Renderstatus bei. Dadurch wird das Element nicht tatsächlich aus dem Dokument entfernt, da es (und sein Teilbaum) weiterhin geometrischen Platz auf der Seite einnimmt und weiterhin anklickbar ist. Außerdem wird der Rendering-Status jederzeit aktualisiert, selbst wenn er ausgeblendet ist.
Sichtbarkeit von Inhalten: versteckt
Auf der anderen Seite wird das Element ausgeblendet, während sein Rendering-Status beibehalten wird. Wenn also eine Änderung erforderlich ist, geschieht dies nur, wenn das Element erneut angezeigt wird (d. h. das
Sichtbarkeit von Inhalten: versteckt
Eigentum wird entfernt).
Einige großartige Anwendungsfälle für Sichtbarkeit von Inhalten: versteckt
Dies ist der Fall, wenn erweiterte virtuelle Shifter implementiert und das Layout gemessen wird.
Fazit
Sichtbarkeit von Inhalten
und die CSS-Containment-Spezifikation bedeutet, dass einige interessante Leistungssteigerungen direkt in Ihre CSS-Datei gelangen. Weitere Informationen zu diesen Eigenschaften finden Sie unter: