Ich habe ein Header-Element und ein Content-Element:
#header
#content
Ich möchte, dass der Header eine feste Höhe hat und der Inhalt die gesamte verbleibende Höhe auf dem Bildschirm ausfüllt overflow-y: scroll;
.
Ist das ohne Javascript möglich?
Vergiss alle Antworten, diese CSS-Zeile hat in 2 Sekunden für mich funktioniert:
1vh
= 1% der Bildschirmhöhe des BrowsersQuelle
Für eine reaktionsschnelle Layoutskalierung möchten Sie möglicherweise Folgendes verwenden:
[Update November 2018] Wie in den Kommentaren erwähnt, können durch die Verwendung der Mindesthöhe Probleme mit reaktionsschnellen Designs vermieden werden
[Update April 2018] Wie in den Kommentaren erwähnt, unterstützten 2011, als die Frage gestellt wurde, nicht alle Browser die Ansichtsfenstereinheiten. Die anderen Antworten waren die Lösungen damals - werden
vmax
im IE immer noch nicht unterstützt, daher ist dies möglicherweise noch nicht die beste Lösung für alle.quelle
min-height: 100vh
a viel besser wäre. Es würde sich auch für reaktionsschnelle Designs skalieren lassen.Eigentlich ist der beste Ansatz folgender:
Dies löst alles für mich und hilft mir, meine Fußzeile zu steuern, und es kann die feste Fußzeile haben, egal ob die Seite nach unten gescrollt wird.
Technische Lösung - BEARBEITET
Historisch gesehen ist es schwierig, mit "Höhe" zu formen, verglichen mit "Breite" am einfachsten. Da konzentriert sich CSS darauf,
<body>
dass das Styling funktioniert. Den Code oben - wir gaben<html>
und<body>
eine Höhe. Hier kommt Magie ins Spiel - da wir auf dem Spieltisch eine Mindesthöhe haben, sagen wir dem Browser, dass er<body>
überlegen ist,<html>
weil er<body>
die Mindesthöhe hält. Dies ermöglicht wiederum<body>
das Überschreiben,<html>
da<html>
die Höhe bereits früher war. Mit anderen Worten, wir betrügen den Browser,<html>
um vom Tisch zu "stoßen" , damit wir unabhängig stylen können.quelle
min-height
undheight
?<body>
dass das Styling funktioniert. Dieser Code: Wir gaben<html>
und<body>
eine Höhe. Hier kommt Magie ins Spiel - da wir auf dem Spieltisch eine Mindesthöhe haben, sagen wir dem Server, dass er<body>
überlegen ist,<html>
weil er<body>
die Mindesthöhe hält. Dies ermöglicht wiederum<body>
das Überschreiben,<html>
da<html>
die Höhe bereits früher war. Mit anderen Worten, wir betrügen den Server,<html>
um vom Tisch zu "stoßen" , damit wir unabhängig stylen können.Sie können vh für die Eigenschaft min-height verwenden.
Sie können wie folgt vorgehen, je nachdem, wie Sie die Ränder verwenden ...
quelle
Die akzeptierte Lösung funktioniert tatsächlich nicht. Sie werden feststellen, dass der Inhalt
div
der Höhe des übergeordneten Inhalts entsprichtbody
. Wenn Sie also diebody
Höhe auf100%
einstellen, wird sie gleich der Höhe des Browserfensters eingestellt. Lassen Sie uns sagen , dass das Browser - Fenster war768px
in der Höhe, durch den Inhalt Einstellungdiv
der Höhe100%
, diediv
in ‚s Höhe ausfallen wird768px
. Auf diese Weise erhalten Sie das Header-Div-Wesen150px
und das Content-Div-Wesen768px
. Am Ende haben Sie Inhalte150px
unter dem Ende der Seite. Eine andere Lösung finden Sie unter diesem Link.quelle
Mit HTML5 können Sie dies tun:
CSS:
HTML:
quelle
Für mich hat der nächste gut funktioniert:
Ich habe den Header und den Inhalt in ein Div eingewickelt
Ich habe diese Referenz verwendet , um die Höhe mit Flexbox zu füllen. Das CSS sieht folgendermaßen aus:
Weitere Informationen zur Flexbox-Technik finden Sie in der Referenz
quelle
Sie können das übergeordnete Element auch auf festlegen
display: inline
. Siehe http://codepen.io/tommymarshall/pen/cECyHStellen Sie sicher, dass auch die Höhe von HTML und Body auf 100% eingestellt ist.
quelle
Die akzeptierte Antwort funktioniert nicht. Und die Antwort mit der höchsten Stimme beantwortet nicht die eigentliche Frage. Mit einem Header mit fester Pixelhöhe und einem Füllelement in der verbleibenden Anzeige des Browsers und scrollen Sie für oowerflow. Hier ist eine Lösung, die tatsächlich funktioniert und die absolute Positionierung verwendet. Ich gehe auch davon aus, dass die Höhe des Headers durch den Klang des "festen Headers" in der Frage bekannt ist. Ich verwende hier 150px als Beispiel:
HTML:
CSS: (Hinzufügen der Hintergrundfarbe nur für visuelle Effekte)
Um einen detaillierteren Blick darauf zu werfen, wie dies funktioniert,
#Content
schauen Sie sich diese jsfiddle mit Bootstrap-Zeilen und -Spalten an.quelle
bottom
Eigenschaft hat dafür gesorgt, dass die#Content
am Ende der Seite stecken bleiben. Ich weiß es zu schätzen, dass Sie sich die Zeit genommen haben, es zu erklären.In diesem Fall möchte ich, dass mein Hauptinhaltsbereich flüssig ist, damit die gesamte Seite 100% der Browserhöhe einnimmt.
height: 100vh;
quelle
Bitte lassen Sie mich hier meine 5 Cent hinzufügen und eine klassische Lösung anbieten:
Dies funktioniert in allen Browsern, kein Skript, kein Flex. Öffnen Sie das Snippet im Ganzseitenmodus und ändern Sie die Größe des Browsers: Die gewünschten Proportionen bleiben auch im Vollbildmodus erhalten.
Hinweis:
idHeader.height
undidContent.top
werden so angepasst, dass sie den Rand einschließen, und sollten denselben Wert haben, wenn der Rand nicht verwendet wird. Andernfalls werden Elemente aus dem Ansichtsfenster entfernt, da die berechnete Breite keine Rahmen, Ränder und / oder Auffüllungen enthält.left:0; right:0;
kannwidth:100%
aus dem gleichen Grund ersetzt werden, wenn kein Rand verwendet wird.padding-top
und / oderpadding-bottom
Attribute hinzufügen#idOuter
.Um meine Antwort zu vervollständigen, hier ist das Fußzeilenlayout:
Und hier ist das Layout mit Kopf- und Fußzeile:
quelle
Sofern Sie IE 9 und niedriger nicht unterstützen müssen, würde ich Flexbox verwenden
Sie müssen auch Körper bekommen, um die ganze Seite zu füllen
quelle
CSS PLaY | browserübergreifendes festes Kopf- / Fußzeilen- / zentriertes einspaltiges Layout
CSS-Frames, Version 2: Beispiel 2, angegebene Breite | 456 Berea Street
Eine wichtige Sache ist, dass, obwohl dies einfach klingt, eine Menge hässlicher Code in Ihre CSS-Datei eingehen wird, um einen solchen Effekt zu erzielen. Leider ist es wirklich die einzige Option.
quelle
quelle
Die beste Lösung, die ich bisher gefunden habe, besteht darin, ein Fußzeilenelement am unteren Rand der Seite festzulegen und dann den Unterschied zwischen dem Versatz der Fußzeile und dem Element, das wir erweitern müssen, auszuwerten. z.B
Die HTML-Datei
Die CSS-Datei
Die js-Datei (mit jquery)
Möglicherweise möchten Sie auch die Höhe des Inhaltselements in jeder Fenstergröße aktualisieren, also ...
quelle
Sehr einfach:
quelle
Haben Sie so etwas versucht?
CSS:
HTML:
quelle