Ich habe ein Haupt-Wrapper-Div, das auf 100% Breite eingestellt ist. Darin möchte ich zwei Divs haben, einen mit fester Breite und einen, der den Rest des Raumes ausfüllt. Wie schwebe ich die zweite Div, um den Rest des Raumes zu füllen. Vielen Dank für jede Hilfe.
241
Antworten:
Es gibt viele Möglichkeiten, das zu tun, wonach Sie fragen:
Verwenden der CSS-
float
Eigenschaft :Verwenden der CSS-
display
Eigenschaft , mit derdiv
s wie folgt wirken kanntable
:Es gibt mehr Methoden, aber diese beiden sind die beliebtesten.
quelle
CSS3 führte flexible Boxen (auch bekannt als Flexbox) ein, mit denen dieses Verhalten ebenfalls erreicht werden kann.
Definieren Sie einfach die Breite des ersten Divs und geben Sie dem zweiten einen
flex-grow
Wert, mit1
dem er die verbleibende Breite des übergeordneten Divs ausfüllen kann.jsFiddle-Demo
Beachten Sie, dass Flexboxen nicht abwärtskompatibel mit alten Browsern sind, sondern eine hervorragende Option für die Ausrichtung auf moderne Browser darstellen (siehe auch Caniuse und MDN ). Eine umfassende Anleitung zur Verwendung von Flexboxen finden Sie unter CSS-Tricks .
quelle
Ich weiß nicht viel über HTML- und CSS-Designstrategien, aber wenn Sie nach etwas Einfachem suchen, das automatisch auf den Bildschirm passt (so wie ich), ist es meiner Meinung nach die einfachste Lösung, die Divs dazu zu bringen, sich wie Wörter in zu verhalten ein Absatz. Versuchen Sie es mit Angabe
display: inline-block
Möglicherweise müssen Sie die Breite der DIVs angeben oder nicht
quelle
display:flex
ist die beste Lösung, aber ich denke,inline-block
ist auch ausgezeichnet, weil es auf mehr Browsern funktioniert. Übrigens müssen Sie möglicherweise beide Divs mit einem umschließen<div style="white-space:nowrap">
, um eine Trennung bei der Größenänderung zu vermeiden.inline-block
Code.Sie können das CSS-Raster verwenden, um dies zu erreichen. Dies ist die Langhandversion zu Illustrationszwecken:
Oder die traditionellere Methode mit Float und Margin.
Ich habe in diesem Beispiel eine Hintergrundfarbe eingefügt, um zu zeigen, wo sich die Dinge befinden - und was mit Inhalten unterhalb des schwebenden Bereichs zu tun ist.
Setzen Sie Ihre Stile nicht in das wirkliche Leben ein, sondern extrahieren Sie sie in ein Stylesheet.
quelle
Geben Sie dem ersten Div einen Float links und fixiert mit, dem zweiten Div 100% Breite einen Float links. Das sollte den Trick machen. Wenn Sie Elemente darunter platzieren möchten, benötigen Sie ein klares: beides auf dem Element, das Sie darunter platzieren möchten
quelle
Dies ist browserübergreifend kompatibel. Ohne den linken Rand treten Probleme mit Inhalten auf, die ganz nach links verlaufen, wenn Ihr Inhalt länger als Ihre Seitenleiste ist.
quelle
Wenn Sie IE6 nicht mit Tags versehen, schweben Sie den zweiten
<div>
und geben Sie ihm einen Rand, der<div>
der festen Breite des ersten entspricht (oder vielleicht etwas größer als dieser ist) .HTML:
CSS:
Der Rand berücksichtigt die Möglichkeit, dass der "Rest des Raums"
<div>
mehr Inhalt enthält als die "feste Breite"<div>
.Geben Sie der festen Breite keinen Hintergrund. Wenn Sie diese sichtbar als unterschiedliche "Spalten" sehen müssen, verwenden Sie den Trick " Faux Columns" .
quelle