Ich habe gerade etwas über eine neue und ungewöhnliche CSS-Einheit gelernt. vh
und vw
messen Sie den Prozentsatz der Höhe und Breite des Ansichtsfensters.
Ich habe mir diese Frage von Stack Overflow angesehen, aber dadurch sahen die Einheiten noch ähnlicher aus.
Wie funktioniert vw und vh unit?
Die Antwort sagt ausdrücklich
vw und vh sind ein Prozentsatz der Fensterbreite bzw. -höhe: 100vw sind 100% der Breite, 80vw sind 80% usw.
Dies scheint genau das gleiche zu sein wie die %
Einheit, die üblicher ist.
In den Entwicklertools habe ich versucht, die Werte von vw / vh in% und umgekehrt zu ändern, und das gleiche Ergebnis erzielt.
Gibt es einen Unterschied zwischen den beiden? Wenn nicht, warum wurden diese neuen Einheiten eingeführt CSS3
?
css
viewport-units
Richard Hamilton
quelle
quelle
Antworten:
100%
kann100%
von der Höhe von allem sein. Wenn ich beispielsweise ein Elternteil habediv
, das1000px
groß ist, und ein Kinddiv
, das sich in der100%
Höhe befindet, kann dieses Kinddiv
theoretisch viel größer als die Höhe des Ansichtsfensters oder viel kleiner als die Höhe des Ansichtsfensters sein, obwohl dies aufdiv
eingestellt ist100%
Höhe .Wenn ich stattdessen das untergeordnete
div
Element auf setze100vh
, wird nur100%
die Höhe des Ansichtsfensters und nicht unbedingt das übergeordnete Element ausgefülltdiv
.quelle
Ich weiß, dass die Frage sehr alt ist und @Josh Beam den größten Unterschied angesprochen hat, aber es gibt noch einen anderen:
Angenommen, Sie haben ein
<div>
direktes Kind, von<body>
dem Sie das gesamte Ansichtsfenster ausfüllen möchtenwidth: 100vw; height: 100vh;
. Es funktioniert genauso,width: 100%; height: 100vh;
bis Sie mehr Inhalt hinzufügen und eine vertikale Bildlaufleiste angezeigt wird. Da dasvw
Konto für die Bildlaufleiste als Teil des Ansichtsfensterswidth: 100vw;
etwas größer sein wird alswidth: 100%;
. Dieser kleine Unterschied führt dazu, dass eine horizontale Bildlaufleiste hinzugefügt wird (damit der Benutzer diese kleine zusätzliche Breite sehen kann), und folglich wäre die Höhe in beiden Fällen auch etwas anders.Dies muss bei der Entscheidung, welches verwendet werden soll, berücksichtigt werden, auch wenn die Größe des übergeordneten Elements mit der Größe des Dokumentansichtsfensters übereinstimmt.
Beispiel:
Verwenden von
width:100vw;
:Verwenden von
width:100%;
:quelle
body { overflow: hidden }
führt dazu, dass die Bildlaufleisten nicht angezeigt werden.Vielen Dank für Ihre Antwort und Ihr Codebeispiel @IanC. Es hat mir sehr geholfen. Eine Klarstellung: Ich glaube, Sie haben "Bildlaufleiste" gemeint, als Sie "Seitenleiste" geschrieben haben.
Hier sind einige verwandte Diskussionen über Ansichtsfenstereinheiten, die Bildlaufleisten zählen, die ich ebenfalls hilfreich fand:
Warum nimmt vw die Bildlaufleiste als Teil des Ansichtsfensters auf?
Die Verwendung von 100vw führt zu horizontalem Zuschneiden, wenn vertikale Bildlaufleisten vorhanden sind
Verhindern Sie, dass 100vw einen horizontalen Bildlauf erstellen
Unterschied zwischen Breite: 100% und Breite: 100vw?
Die W3C-Spezifikation für die Einheiten vw, vh, vmin, vmax (die "prozentualen Längen des Ansichtsfensters") besagt, dass "keine Bildlaufleisten vorhanden sind".
Anscheinend subtrahiert Firefox die Breite der Bildlaufleiste von 100 VW, wie @ Nolonars Kommentar unter Unterschied zwischen Breite: 100% und Breite: 100 Vw? beobachtet unter Berufung auf "Kann ich verwenden".
Kann ich verwenden , möglicherweise in Spannung mit der Spezifikation (?), Sagt, dass alle Browser außer Firefox derzeit "falsch" 100vw als die gesamte Seitenbreite einschließlich der vertikalen Bildlaufleiste betrachten.
quelle
Die Einheiten vw (Ansichtsbreite) und vh (Ansichtshöhe) sind relativ zur Größe des Ansichtsfensters, wobei 100vw oder vh 100% der Breite / Höhe des Ansichtsfensters sind.
Wenn ein Ansichtsfenster beispielsweise 1600 Pixel breit ist und Sie 2vw angeben, entspricht dies 2% der Breite des Ansichtsfensters oder 32 Pixel.
% unit basiert immer auf der übergeordneten Elementbreite des aktuellen Elements
quelle
Es gibt einen Unterschied, der nicht unbedingt angesprochen wurde. 100vw enthält die Breite der Scrool-Leiste, während 100% diese nicht enthält. Es ist ein kleiner Unterschied, aber wichtig beim Design.
quelle