Betrachten Sie den folgenden Code :
#wrapper {
width: 500px;
border: 1px solid black;
}
#first {
width: 300px;
border: 1px solid red;
}
#second {
border: 1px solid green;
}
<div id="wrapper">
<div id="first">Stack Overflow is for professional and enthusiast programmers, people who write code because they love it.</div>
<div id="second">When you post a new question, other users will almost immediately see it and try to provide good answers. This often happens in a matter of minutes, so be sure to check back frequently when your question is still new for the best response.</div>
</div>
Ich möchte, dass die beiden Divs innerhalb des Wrapper-Div nebeneinander liegen. In diesem Fall sollte die Höhe des grünen Div die Höhe des Wrappers bestimmen.
Wie kann ich dies über CSS erreichen?
#wrapper { display: flex; }
Antworten:
Schweben Sie einen oder beide inneren Divs.
Floating one div:
oder wenn Sie beide schweben lassen, müssen Sie das Wrapper-Div ermutigen, beide schwebenden Kinder zu enthalten, oder es wird denken, dass es leer ist und nicht den Rand um sie legen
Beide Divs schweben lassen:
quelle
overflow:auto
den #wrapper so einstellen, dass sich die Größe immer noch an die Größe des Inhalts anpasst. (Ohne die Notwendigkeit eines klaren: beide Elemente)overflow: hidden
macht hier einen tollen Job! Für mich ist es jedoch immer noch eine Art Magie. Ich dachte, dasoverflow: hidden
sollte den Inhalt verbergen , wenn er nicht in den Container passt. Aber hier ist das Verhalten etwas anders. Könnten Sie das bitte näher erläutern?overflow
Eigenschaft löscht Floats sowohl vertikal als auch horizontal, weshalb in meinem ersten Beispiel#second
kein linker Rand benötigt wird. Die Überlaufeigenschaft funktioniert, solange der Wert nicht angegeben istvisible
. Ich bevorzuge das automatische Ausblenden für solche Fälle Eine Bildlaufleiste wird nicht versehentlich generiert (was automatisch funktioniert). In beiden Fällen wird in einem solchen Szenario kein Inhalt ausgeblendet, da dieser nur ausgeblendet wird, wenn er außerhalb Ihrer 500-Pixel-Breite liegt, aber solange kein Höheninhalt vorhanden ist wickeln Sie innerhalb der Breite wieMit zwei Divs,
Sie können auch die
display
Eigenschaft verwenden:jsFiddle Beispiel hier .
Wenn
div1
eine bestimmte Höhe überschrittendiv2
wird , wird nebendiv1
unten platziert. Um dies zu lösen, verwenden Sievertical-align:top;
ondiv2
.jsFiddle Beispiel hier .
quelle
div
s erstellt wurdeninline
, müssen Sie in Ihrem HTML-Code keine Leerzeichen, neuen Zeilen usw. zwischen ihnen lassen. Andernfalls rendern Browser einen Abstand zwischen ihnen. Siehe diese Geige : Sie können es nicht schaffen, beidediv
s in derselben Zeile zu halten , es sei denn, Sie setzen ihre Tags ohne irgendetwas dazwischen.Mithilfe der CSS-Eigenschaft float können Sie Elemente nebeneinander platzieren:
Sie müssen sicherstellen, dass das Wrapper-Div das Floating in Bezug auf die Breite zulässt und die Ränder usw. korrekt eingestellt sind.
quelle
Versuchen Sie, das Flexbox-Modell zu verwenden. Es ist einfach und kurz zu schreiben.
Live Jsfiddle
CSS:
Standardrichtung ist Zeile. Es wird also im #wrapper nebeneinander ausgerichtet. IE9 oder weniger wird jedoch nicht unterstützt
quelle
flex
. Vielen Dank!Hier ist die Lösung:
Ihre Demo wurde aktualisiert.
http://jsfiddle.net/dqC8t/1/
quelle
overflow: auto;
, funktioniert es immer noch. Können Sie ein Beispiel geben, wo es erforderlich ist?margin: 0 0 0 302px;
weil es darauf ankommtwidth: 300px;
. Danke trotzdem!!Option 1
Verwenden Sie
float:left
für beidediv
Elemente und legen Sie für beide div-Elemente eine% -Breite mit einer Gesamtbreite von 100% fest.Verwenden Sie
box-sizing: border-box;
für die schwebenden div-Elemente. Das Wertrahmenfeld erzwingt das Auffüllen und die Ränder in Breite und Höhe, anstatt sie zu erweitern.Verwenden Sie clearfix für
<div id="wrapper">
, um die schwebenden untergeordneten Elemente zu löschen, wodurch die Wrapper-Div-Skalierung auf die richtige Höhe gebracht wird.http://jsfiddle.net/dqC8t/3381/
Option 2
Verwenden Sie
position:absolute
für ein Element und eine feste Breite für das andere Element.Position hinzufügen: relativ zum
<div id="wrapper">
Element, damit untergeordnete Elemente dem<div id="wrapper">
Element absolut positioniert werden .http://jsfiddle.net/dqC8t/3382/
Option 3
Verwenden Sie
display:inline-block
für beidediv
Elemente und legen Sie für beide div-Elemente eine% -Breite mit einer Gesamtbreite von 100% fest.Und wieder (wie im
float:left
Beispiel)box-sizing: border-box;
für die div-Elemente verwenden. Das Wertrahmenfeld erzwingt das Auffüllen und die Ränder in die Breite und Höhe, anstatt sie zu erweitern.HINWEIS: Inline-Block-Elemente können Abstandsprobleme aufweisen, da sie durch Leerzeichen im HTML-Markup beeinflusst werden. Weitere Informationen hier: https://css-tricks.com/fighting-the-space-between-inline-block-elements/
http://jsfiddle.net/dqC8t/3383/
Eine letzte Option wäre die Verwendung der neuen Anzeigeoption mit dem Namen flex. Beachten Sie jedoch, dass möglicherweise die Browserkompatibilität zum Einsatz kommt:
http://caniuse.com/#feat=flexbox
http://www.sketchingwithcss.com/samplechapter/cheatsheet.html
quelle
float
schwimme nicht mein Boot.inline-block
Felsen. (Entschuldigung.)Versuchen Sie, die folgenden Codeänderungen zu verwenden, um zwei Divs voreinander zu platzieren
JSFiddle-Link
quelle
Es ist sehr einfach - man könnte es auf die harte Tour machen
oder der einfache Weg
Es gibt auch wie eine Million andere Wege.
Aber ich würde nur mit dem einfachen Weg. Ich möchte Ihnen auch sagen, dass viele der Antworten hier falsch sind. Aber beide Methoden, die ich gezeigt habe, funktionieren zumindest in HTML 5.
quelle
Dies ist die richtige CSS3-Antwort. Hoffe, das hilft dir jetzt irgendwie: D Ich empfehle dir wirklich, das Buch zu lesen: https://www.amazon.com/Book-CSS3-Developers-Future-Design/dp/1593272863 Eigentlich habe ich diese Lösung aus dem Lesen dieses Buches gemacht . : D.
quelle
Fügen Sie
float:left;
in beiden Divs eine Eigenschaft hinzu.display:inline-block;
Eigenschaft hinzufügen .In
display:flex;
Immobilien in Mutter div.quelle
Mein Ansatz:
CSS:
quelle
quelle
In der Material-Benutzeroberfläche und in react.js können Sie das Raster verwenden
quelle