CSS-Viewport-Einheiten gibt es schon seit einigen Jahren und mit der Zeit beginnen immer mehr Entwickler, sie zu verwenden. Der Vorteil besteht darin, dass sie uns eine Möglichkeit zur dynamischen Größenanpassung bieten, ohne dass JavaScript erforderlich ist. Und wenn das Ganze scheitert, gibt es jede Menge Backup-Pläne. In diesem Artikel erfahren wir mehr über CSS Viewport-Einheiten und wie man sie verwendet. Anschließend werden wir uns einige häufige Probleme und ihre Lösungen und Anwendungsfälle ansehen. Lassen Sie uns beginnen. Einführung Gemäß der CSS-Spezifikation sind die Prozenteinheiten des Ansichtsfensters relativ zur Größe des anfänglichen umschließenden Blocks, der das Stammelement der Webseite darstellt. Die Ansichtsfenstereinheiten sind: Die Ansichtsfensterbreite Die Angenommen, wir haben ein Element mit dem folgenden CSS: .element { Breite: 50vw; } Wenn die Ansichtsfensterbreite Breite = 500*50% = 250px Ansichtsfensterhöhe Die Wir haben ein Element mit folgendem CSS: .element { Höhe: 50vh; } Wenn die Ansichtsfensterhöhe Höhe = 290*70% = 202px Jeder sagt, dass in seinem Lebenslauf kein Projekt steht, also habe ich für jeden ein Projekt gesucht und zusätzlich ein [Bau-Tutorial] angehängt. Vmin Einheit Nehmen wir das folgende Beispiel. Wir haben ein Querformattelefon mit einem Element, das über eine .element { Polsterung oben: 10 vmin; Polsterung unten: 10vmin; } So wird Wie Sie sich vielleicht vorstellen können, lauten die Berechnungen wie folgt padding-top = (10 % der Höhe) = 10 % * 164 = 16,4 Pixel padding-bottom = (10 % der Höhe) = 10 % * 164 = 16,4 Pixel Vmax-Einheit Nehmen wir das folgende Beispiel. .element { Polsterung oben: 10vmax; Polsterung unten: 10vmax; } Die Berechnungsergebnisse sind wie folgt: padding-top = (10 % der Breite) = 10 % * 350 = 35px padding-bottom = (10% der Breite) = 10% * 350 = 35p Wie unterscheiden sich Ansichtsfenstereinheiten von Prozentsätzen? Ansichtsfenstereinheiten basieren auf dem Stammelement der Seite, während Prozentsätze auf dem Container basieren, in dem sie sich befinden. Sie unterscheiden sich daher voneinander, haben aber jeweils ihre eigenen Einsatzmöglichkeiten. Anwendungsfall: Schriftgröße in Ansichtsfenstereinheiten CSS-Ansichtsfenstereinheiten eignen sich hervorragend für reaktionsfähige Typografie. Als Titel für unseren Artikel könnten wir beispielsweise Folgendes verwenden: .Titel { Schriftgröße: 5vw; } Die Körpergröße wird sehr klein, was sich nicht gut auf die Zugänglichkeit und das Benutzererlebnis auswirkt. Soweit ich weiß, sollte die Mindestschriftgröße auf Mobilgeräten nicht weniger als Um dieses Problem zu lösen, müssen wir eine Mindestschriftgröße für den Titel angeben, was wir mit .Titel { Schriftgröße: calc(14px + 2vw); } Ein weiterer wichtiger Punkt, den es zu berücksichtigen gilt, ist das Verhalten der Schriftgröße auf größeren Bildschirmen, wie beispielsweise @media (Mindestbreite: 1800px) { .Titel { Schriftgröße: 40px; } } Durch das Zurücksetzen der Schriftgröße können wir sicherstellen, dass die Größe nicht zu groß wird. Möglicherweise müssen Sie auch mehrere Medienabfragen hinzufügen, aber das liegt bei Ihnen und hängt vom Kontext Ihres Projekts ab. Beispieladresse: https://codepen.io/shadeed/pen/fa989837c6379770cce49f0be6daa3e3 Vollbild Manchmal benötigen wir ein .P { Höhe: 100vh; Anzeige: Flex; Flex-Richtung: Spalte; Inhalt ausrichten: zentriert; Elemente ausrichten: zentrieren; } Durch Hinzufügen von Beispiel-Quellcode: https://codepen.io/shadeed/pen/dc4e82f3c873cc64ae5c5bc4a3f4ef9f?editors=1100 Sticky-Layout (Fußzeile) Auf großen Bildschirmen ist der Inhalt der Website teilweise spärlich dargestellt und Um dies zu beheben, müssen wir dem Inhalt eine Höhe geben, die der Ansichtsfensterhöhe (Kopf- und Fußzeile) entspricht. Dies dynamisch durchzuführen ist schwierig, mit dem Ansichtsfenster von CSS ist es jedoch einfach. Erste Lösung: Wenn die Höhe Kopfzeile, Fußzeile { Höhe: 70px; } hauptsächlich { Höhe: berechnet (100vh – 70px – 70px); } Es gibt keine Garantie, dass diese Lösung immer funktioniert, insbesondere 2. Zweite Lösung: Flexbox und Viewport-Einheiten ( empfohlen ) Indem Sie Körper { Mindesthöhe: 100vh; Anzeige: Flex Flex-Richtung: Spalte; { hauptsächlich { /* Dadurch nimmt das Hauptelement den verbleibenden Platz dynamisch ein */ Flex-Wachstum: 1; } Auf diese Weise ist das Problem gelöst und wir haben einen Sticky Beispiel-Quellcode: https://codepen.io/shadeed/pen/c735b26b8fa97ee685b38084448b3f85?editors=1100 Responsive Elemente Nehmen wir an, wir haben ein Portfolio, das unsere Responsive-Design-Arbeit präsentiert, und wir haben drei Geräte (Mobiltelefon, Tablet und Laptop). Jedes Gerät enthält ein Bild. Ziel ist es, diese Seiten mittels CSS responsiv anzupassen. Durch die Verwendung von CSS-Raster- und Ansichtsfenstereinheiten können wir es vollständig dynamisch und reaktionsfähig gestalten. <div Klasse="Wrapper"> <div class="Gerät Laptop"></div> <div class="mobiles Gerät"></div> <div class="Gerät Tablet"></div> </div> Ansichtsfenstereinheiten können auch in .wrapper { Anzeige: Raster; Raster-Vorlagenspalten: Wiederholung (20, 5vw); Raster-Auto-Zeilen: 6vw; } .mobile { Position: relativ; Z-Index: 1; Rasterspalte: 2 / Spanne 3; Gitterzeile: 3 / Spanne 5; } .tablet { Position: relativ; Z-Index: 1; Gitterspalte: 13 / Spanne 7; Gitterzeile: 4 / Spanne 4; Rahmen unten: 1vw durchgezogen #a9B9dd; Rand rechts: durchgezogen 3vw #a9B9dd; } .laptop { Position: relativ; Gitterspalte: 3/Spanne 13; Gitterzeile: 2 / Spanne 8; } /* Ansichtsfenstereinheiten werden für unten, links, rechts, Höhe und Randradius verwendet. Ist das nicht cool? */ .laptop:nach { Inhalt:""; Position: absolut; unten: -3vw; links: -5,5vw; rechts: -5,5vw; Höhe: 3vw; Hintergrundfarbe: #a9B9dd; Randradius: 0 0 1vw 1vw; } Beispiel-Quellcode: https://codepen.io/shadeed/pen/2da0f2b70699769f8de3220ff4465bc6?editors=1100 Befreie dich vom Container Mir ist ein Anwendungsfall aufgefallen, der sich am besten zum Bearbeiten von Layouts eignet. Ein untergeordnetes Element, das .Ausbruch { Breite: 100vw; Position: relativ; links: 50%; rechts: 50%; Rand links: -50vw; Rand rechts: -50vw; } Lassen Sie uns das etwas aufschlüsseln, damit wir Schritt für Schritt verstehen, wie all diese Eigenschaften funktionieren. 1. Der wichtigste Schritt besteht darin, die Breite des Bildes auf 2. Fügen Sie Um das Bild zu zentrieren, müssen wir ihm einen negativen Rand mit einer Breite von der Hälfte der Ansichtsfensterbreite zuweisen. 3. Schließlich müssen wir das Bild um einen Wert von Beispieladresse: https://codepen.io/shadeed/pen/828f12b1ef7fa7211584ff5c7b82d2fa?editors=1100 Vertikaler und horizontaler Abstand Ein weiterer interessanter Anwendungsfall, der mir in den Sinn kommt, ist die Verwendung von Ansichtsfenstereinheiten zur Darstellung des Abstands zwischen Elementen. Dies kann in Verbindung mit Werten wie Modalbox Für Modale müssen wir sie von der Oberseite des Ansichtsfensters hineinschieben. Normalerweise tun Sie dies mit .modal-body { oben: 20vh; } Beispieladresse: https://codepen.io/shadeed/pen/f77a0d58947c64c2b3dadbd887700db5?editors=1100 Seitenkopf Der Nehmen wir beispielsweise den folgenden CSS-Stil an: .Seitenkopfzeile { Polsterung oben: 10vh; Polsterung unten: 10vh; } .page-header h2 { Rand unten: 1,5vh; } Verwenden Sie Beispiel-Quellcode: https://codepen.io/shadeed/pen/43024fa031519e316e95bb3ce47f2b22?editors=1100 Vmin- und Vmax-Anwendungsfälle In diesem Anwendungsfall geht es um die obere und untere .Seitenkopfzeile { Polsterung: 10vmin 1rem; } Beispiel-Quellcode: https://codepen.io/shadeed/pen/f335c2f43b960a2c70ea057228ddc5b9?editors=0100 Seitenverhältnis Wir können Zuerst müssen Sie das gewünschte Seitenverhältnis bestimmen. Verwenden Sie für dieses Beispiel P { /* 9/16 * 100 */ Höhe: 56,25vw; } Beispiel-Quellcode: https://codepen.io/shadeed/pen/dc4e82f3c873cc64ae5c5bc4a3f4ef9f?editors=0100 Beliebte obere Grenze Kennen Sie den oberen Rahmen, den die meisten Websites verwenden? Oft hat es die gleiche Farbe wie die Marke, was ihm eine gewisse Persönlichkeit verleiht. Wir unterstützen einen Anfangswert von vw = (Pixelwert / Ansichtsfensterbreite) * 100 Die Ansichtsfensterbreite wird verwendet, um das Verhältnis zwischen Pixelwerten und erforderlichen Für unser Beispiel fügen wir der .header { Rahmen oben: 4px durchgezogen #8f7ebc; } In meinem Fall beträgt die Ansichtsfensterbreite vw = (4 / 1440) * 100 = 0,277 .header { Rahmen oben: 0,277vw durchgezogen #8f7ebc; } Noch besser: Wir können einen Basispixelwert verwenden und die Ansichtsfenstereinheit kann additiv sein. .header { Rahmen oben: calc(2px + 0,138vw) solid $color-main; } Probleme beim Scrollen auf Mobilgeräten Bei Mobilgeräten besteht häufig das Problem, dass selbst bei .mein-element { Höhe: 100vh; /* Fallback für Browser, die keine benutzerdefinierten Eigenschaften unterstützen */ Höhe: berechnet (var (--vh, 1vh) * 100); } // Zuerst ermitteln wir die Ansichtsfensterhöhe, die wir mit 1 % multiplizieren, um einen Wert in VH-Einheiten zu erhalten. let vh = window.innerHeight * 0,01; // Legen Sie dann den Wert in der benutzerdefinierten Eigenschaft „--vh“ auf eine Eigenschaft im Stammverzeichnis des Dokuments fest. document.documentElement.style.setProperty('--vh', „${vh}px“); Beispiel-Quellcode: https://codepen.io/shadeed/pen/1d18ca2d23ec0038c759dc62dc3fd8c3?editors=0110 Dies ist das Ende dieses Artikels über die Verwendung von CSS Viewport-Einheiten zur schnellen Layouterstellung. Weitere relevante Inhalte zu CSS Viewport-Einheiten finden Sie in den vorherigen Artikeln von 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, dass jeder 123WORDPRESS.COM in Zukunft unterstützen wird! |
<<: Lösung für Indexfehler, die durch implizite MySQL-Typkonvertierung verursacht werden
>>: Verwendung und Prinzipien von Provide und Inject in Vue3
Inhaltsverzeichnis Informationen zu WITH-Abfragen...
Inhaltsverzeichnis Vorwort Zur APP-Methode spring...
Inhaltsverzeichnis Vorwort Frontend-Struktur Back...
Wenn Sie es nicht durch direktes Klicken auf „Dow...
Detailliertes Beispiel einer MySQL-Austauschparti...
Inhaltsverzeichnis Vorwort 1. Systemdienststeueru...
Ein ES-Image vom Docker-Hub heruntergeladen, Vers...
Vorwort Ich habe zuvor viele ähnliche Artikel gel...
Inhaltsverzeichnis Rendern Installieren Code-Impl...
Vorwort Manchmal stößt man auf Geschäftstabellen,...
Passwortmodus PDO::__construct(): Der Server hat ...
Füge im CSS-Style des Elements, welches die Hinte...
Mysql 8.0 Installationsprobleme und Passwort-Rese...
Der Tomcat-Server ist ein kostenloser und quellof...
Detaillierte Erklärung der MySQL-Instanz mit akti...