Angenommen, Sie haben Folgendes:
html, body {margin: 0; padding: 0}
.box {width: 100vw; height: 100vh}
<div class="box">Screen 1</div>
Sie erhalten etwas, das den Bildschirm ausfüllt, keine Bildlaufleisten. Aber fügen Sie noch eine hinzu:
<div class="box">Screen 1</div>
<div class="box">Screen 2</div>
Sie erhalten nicht nur vertikale Bildlaufleisten (erwartet), sondern auch eine leichte horizontale Bildlaufleiste.
Mir ist klar, dass Sie die Breite weglassen oder auf width einstellen können: 100%, aber ich bin gespannt, warum dies geschieht. Soll 100vw nicht "100% der Breite des Ansichtsfensters" sein?
Antworten:
Wie bereits in wf4 erläutert, ist die horizontale Schriftrolle aufgrund der vertikalen Schriftrolle vorhanden. was du lösen kannst, indem du gibst
max-width: 100%
.Geige arbeiten
quelle
max-width: 100%
die Breite des Ansichtsfensters ohne Bildlaufleisten ist, dann brauchten Sie das überhaupt nicht100vw
:-) Sie könnten es nur verwenden,width: 100%
weil das Element keinen positionierten Vorfahren hat, also ist seine Referenz der Körper.Bildlaufleisten werden in die Liste aufgenommen,
vw
sodass die horizontale Bildlaufleiste hinzugefügt wird, damit Sie unter der vertikalen Bildlaufleiste sehen können.Wenn Sie nur 1 Box haben, ist diese 100% breit und 100% hoch. Sobald Sie 2 hinzufügen, ist es 100% breit und 200% hoch, wodurch die vertikale Bildlaufleiste ausgelöst wird. Wenn die vertikale Bildlaufleiste ausgelöst wird, wird die horizontale Bildlaufleiste ausgelöst.
Sie könnten hinzufügen
overflow-x:hidden
zubody
http://jsfiddle.net/NBzVV/
quelle
max-width:100%
zu.box
wird dies verhindert.overflow
auch wenn Sie es dem hinzufügen, wirdx
keines derpostition: sticky
Dinge funktionieren.Ich hatte ein ähnliches Problem und fand die folgende Lösung unter Verwendung von JS- und CSS-Variablen.
JS:
CSS:
1vw ist ein Fallback-Wert.
quelle
Update: Ab Chrome Version 66 kann ich das von der Frage gemeldete Verhalten nicht mehr reproduzieren. Es scheint keine Problemumgehung erforderlich zu sein.
Ursprüngliche Antwort
Dies ist tatsächlich ein Fehler, wie in dieser Antwort und den obigen Kommentaren berichtet.
Während die Problemumgehung in der akzeptierten Antwort (Hinzufügen
.box {max-width: 100%;}
) im Allgemeinen funktioniert, finde ich es bemerkenswert, dass sie derzeit nicht funktioniertdisplay:table
(in Chrome getestet). In diesem Fall ist die einzige Problemumgehung, die ich gefunden habe, die Verwendungwidth:100%
stattdessen.display:table
display:table
undwidth:100%
quelle
max-width: 100%
. Ich schlug vor Wechselwidth: 100vw
zuwidth: 100%
. Ich habe meine Antwort aktualisiert, um in sich geschlossen zu sein.Um die in vw enthaltene Breite der Bildlaufleiste loszuwerden, musste ich Folgendes tun:
quelle
quelle