Ich möchte, dass der Körper 100% der Browserhöhe hat. Kann ich das mit CSS machen?
Ich habe versucht einzustellen height: 100%
, aber es funktioniert nicht.
Ich möchte eine Hintergrundfarbe für eine Seite festlegen, die das gesamte Browserfenster ausfüllt. Wenn die Seite jedoch nur wenig Inhalt enthält, wird unten ein hässlicher weißer Balken angezeigt.
Antworten:
Versuchen Sie, die Höhe des HTML-Elements ebenfalls auf 100% einzustellen.
Body sucht in seinem übergeordneten Element (HTML) nach Informationen zum Skalieren der dynamischen Eigenschaft. Daher muss für das HTML-Element auch die Höhe festgelegt werden.
Der Inhalt des Körpers muss sich jedoch wahrscheinlich dynamisch ändern. Wenn Sie die Mindesthöhe auf 100% einstellen, wird dieses Ziel erreicht.
quelle
body {min-height}
Version verwenden, können Sie keinen.body-child{height: 100%}
Trick verwenden.vh
->body { height: 100vh }
- Antwort hier überprüfen stackoverflow.com/a/25829844/2680216Alternativ zum Festlegen der Höhe des Elements
html
und desbody
Elements100%
können Sie auch die prozentuale Länge des Ansichtsfensters verwenden.In diesem Fall können Sie den Wert verwenden, bei
100vh
dem es sich um die Höhe des Ansichtsfensters handelt.Beispiel hier
Dies wird in den meisten modernen Browsern unterstützt - Unterstützung finden Sie hier .
quelle
margin: 0;
, um eine dauerhafte vertikale Bildlaufleiste rechts zu vermeiden.Wenn Sie ein Hintergrundbild haben, möchten Sie dies stattdessen einstellen:
Dies stellt sicher, dass Ihr Body-Tag weiter wachsen kann, wenn der Inhalt größer als das Ansichtsfenster ist, und dass das Hintergrundbild weiterhin wiederholt / gescrollt / was auch immer wird, wenn Sie mit dem Scrollen nach unten beginnen.
Denken Sie daran , wenn Sie IE6 unterstützen müssen Sie müssen einen Weg finden , in verkeilen
height:100%
für Körper, IE6 Leckereienheight
magmin-height
sowieso.quelle
body{min-height: 100vh}
body { height: auto; }
Bildlaufleisten in FireFox nicht angezeigt werden. anders als das funktioniert perfekt.Wenn Sie die Ränder am Körper behalten möchten und keine Bildlaufleisten möchten, verwenden Sie das folgende CSS:
Durch die Einstellung erhalten
body {min-height:100%}
Sie Bildlaufleisten.Siehe Demo unter http://jsbin.com/aCaDahEK/2/edit?html,output .
quelle
height: auto;
in derbody
Klausel, damit jetzt Bildlaufleisten angezeigt werden.quelle
Nach dem Testen verschiedener Szenarien halte ich dies für die beste Lösung:
Es ist insofern dynamisch, als die
html
und diebody
Elemente automatisch erweitert werden, wenn ihr Inhalt überläuft. Ich habe dies in der neuesten Version von Firefox, Chrome und IE 11 getestet.Sehen Sie sich hier die vollständige Geige an (für Ihre Tischhasser da draußen können Sie sie jederzeit ändern, um ein Div zu verwenden):
https://jsfiddle.net/71yp4rh1/9/
Nachdem dies gesagt wurde, gibt es mehrere Probleme mit den hier veröffentlichten Antworten .
Wenn Sie das obige CSS verwenden, werden HTML und Body-Element NICHT automatisch erweitert, wenn ihr Inhalt wie hier gezeigt überläuft:
https://jsfiddle.net/9vyy620m/4/
Beachten Sie beim Scrollen den sich wiederholenden Hintergrund? Dies geschieht, weil die Höhe des Körperelements aufgrund des Überlaufens der untergeordneten Tabelle NICHT zugenommen hat. Warum wird es nicht wie jedes andere Blockelement erweitert? Ich bin mir nicht sicher. Ich denke, Browser behandeln dies falsch.
Das Einstellen einer Mindesthöhe von 100% am Körper wie oben gezeigt verursacht andere Probleme. Wenn Sie dies tun, können Sie nicht angeben, dass ein untergeordnetes Div oder eine untergeordnete Tabelle eine prozentuale Höhe einnimmt, wie hier gezeigt:
https://jsfiddle.net/aq74v2v7/4/
Hoffe das hilft jemandem. Ich denke, Browser behandeln dies falsch. Ich würde erwarten, dass sich die Körpergröße automatisch anpasst, wenn die Kinder überlaufen. Dies scheint jedoch nicht zu passieren, wenn Sie 100% Höhe und 100% Breite verwenden.
quelle
height: 100vh
ist auch keine Lösung. Wenn Sie Ihren oberen Container auf100vh
hoch100vw
einstellen und Probleme verursachen, wenn der Container über Bildlaufleisten verfügt, ist dieser größer als er sein sollte (und die Bildlaufleisten können unnötig sichtbar sein). Dieheight: 100vh
auch verursacht Probleme für uns auf neueren Android - Geräte (zB Xiaomi Mi 9 mit Android 9), wobei der Behälter größer als der Bildschirm würde selbst und würde unnötige vertikale Bildlaufleiste auf das Dokument Körper machen.Was ich zu Beginn buchstäblich jeder von mir verwendeten CSS-Datei verwende, ist Folgendes:
Der Rand von 0 stellt sicher, dass die HTML- und BODY-Elemente vom Browser nicht automatisch positioniert werden, um links oder rechts davon Platz zu haben.
Das Auffüllen von 0 stellt sicher, dass die HTML- und BODY-Elemente aufgrund von Browser-Standardeinstellungen nicht automatisch alles in ihnen nach unten oder rechts drücken.
Die Breiten- und Höhenvarianten sind auf 100% eingestellt, um sicherzustellen, dass der Browser die Größe nicht ändert, um tatsächlich einen automatisch eingestellten Rand oder Abstand zu erhalten, wobei Min und Max festgelegt werden, nur für den Fall, dass seltsame, unerklärliche Dinge passieren, obwohl Sie wahrscheinlich brauche ich sie nicht.
Diese Lösung bedeutet auch, dass Sie, wie ich es vor einigen Jahren mit HTML und CSS angefangen habe, nicht Ihr erstes
<div>
a geben müssenmargin:-8px;
, damit es in die Ecke des Browserfensters passt.Bevor ich gepostet habe, habe ich mir mein anderes Vollbild-CSS-Projekt angesehen und festgestellt, dass alles, was ich dort verwendet habe, nur
body{margin:0;}
und nichts anderes war, was in den 2 Jahren, in denen ich daran gearbeitet habe, gut funktioniert hat.Hoffe, diese detaillierte Antwort hilft, und ich fühle Ihren Schmerz. In meinen Augen ist es dumm, dass Browser eine unsichtbare Grenze auf der linken und manchmal oberen Seite der body / html-Elemente setzen.
quelle
width: 100%
für Body- und HTML-Elemente ist? Ja, ich verstehe, dass aus praktischer Sichtbody { margin: 0; }
in den meisten Fällen ausreichen sollte. Ich möchte nur gründlicher verstehen.Ein schnelles Update
Eine bessere Lösung mit dem heutigen CSS
quelle
overflow: auto
Hier mache die Magie. Übrigens benutze ich Chrome.Hier:
quelle
Bei Bedarf können Sie auch JS verwenden
quelle
Versuchen
quelle
width: 100%
für Body- und HTML-Elemente ist? Ja, ich verstehe, dass aus praktischer Sichtbody { margin: 0; }
in den meisten Fällen ausreichen sollte. Ich möchte nur gründlicher verstehen.Bitte prüfen Sie das:
Oder probieren Sie die neue Methode Ansichtsfensterhöhe:
Ansichtsfenster: Wenn Sie das Ansichtsfenster verwenden, bedeutet dies, dass der Bildschirminhalt unabhängig von der Größe des Bildschirms in voller Höhe angezeigt wird.
quelle
width: 100%
für Body- und HTML-Elemente ist?Wenn Sie nicht Ihre eigene CSS-Datei bearbeiten und die Höhenregeln selbst definieren möchten, lösen die typischsten CSS-Frameworks dieses Problem auch, indem das body-Element die gesamte Seite ausfüllt und unter anderem mehrere Probleme verursacht Größen von Ansichtsfenstern.
Das Tacit CSS-Framework löst dieses Problem beispielsweise sofort , wenn Sie keine CSS-Regeln und -Klassen definieren müssen und nur die CSS-Datei in Ihren HTML-Code aufnehmen.
quelle
Funktioniert für alle gängigen Browser: FF, Chrome, Opera, IE9 +. Funktioniert mit Hintergrundbildern und Verläufen. Bildlaufleisten sind je nach Bedarf verfügbar.
quelle
Ich würde das benutzen
Der Browser wird verwenden
min-height: 100vh
und wenn der Browser irgendwie etwas älter ist,min-height: 100%
wird dies der Fallback sein.Dies
overflow: auto
ist erforderlich, wenn Sie möchten, dass der Körper und HTML ihre Höhe erhöhen, wenn Sie die Größe des Bildschirms ändern (z. B. auf eine mobile Größe).quelle
Nur mit 1 Zeile CSS… Sie können dies erledigen.
quelle
100vh
ist eigentlich nicht das, was Sie für iOS Safari erwarten.Alle Antworten sind 100% richtig und gut erklärt, aber ich habe etwas Gutes und sehr Einfaches getan, um es ansprechbar zu machen.
Hier nimmt das Element eine 100% ige Höhe des Ansichtsfensters ein, aber wenn es um die mobile Ansicht geht, sieht es in der Porträtansicht (mobil) nicht besonders gut aus. Wenn der Ansichtsfenster kleiner wird, wird das Element kollabieren und sich überlappen. Um es hier wenig ansprechbar zu machen, ist Code. Ich hoffe, jemand wird dabei Hilfe bekommen.
Hier ist JSfiddle Demo.
quelle
Hier Update
quelle
Über den zusätzlichen Platz unten: Ist Ihre Seite eine ASP.NET-Anwendung? Wenn ja, ist wahrscheinlich fast alles in Ihrem Markup verpackt. Vergessen Sie nicht, das Formular ebenfalls zu stylen. Durch Hinzufügen
overflow:hidden;
zum Formular wird möglicherweise der zusätzliche Platz unten entfernt.quelle
quelle
width: 100%
für Body- und HTML-Elemente ist? Ja, ich verstehe, dass aus praktischer Sichtbody { margin: 0; }
in den meisten Fällen ausreichen sollte. Ich möchte nur gründlicher verstehen.CSS3 hat eine neue Methode.
Dadurch entspricht ViewPort zu 100% der Höhe.
So sollte Ihr Code sein
quelle