Ich möchte, dass mein Container div die maximale Höhe seiner Kindergröße erreicht. ohne zu wissen, welche Größe das Kind div
haben wird. Ich habe JSFiddle ausprobiert . Der Behälter div
ist rot. was nicht auftaucht. Warum?
Ich möchte, dass mein Container div die maximale Höhe seiner Kindergröße erreicht. ohne zu wissen, welche Größe das Kind div
haben wird. Ich habe JSFiddle ausprobiert . Der Behälter div
ist rot. was nicht auftaucht. Warum?
Antworten:
Fügen Sie die folgende Eigenschaft hinzu:
.c{
...
overflow: hidden;
}
Dadurch wird der Container gezwungen, die Höhe aller darin enthaltenen Elemente unabhängig von schwebenden Elementen zu berücksichtigen.
http://jsfiddle.net/gtdfY/3/
Vor kurzem habe ich an einem Projekt gearbeitet, für das dieser Trick erforderlich war, das jedoch einen Überlauf zulassen musste. Stattdessen können Sie ein Pseudoelement zum Löschen Ihrer Floats verwenden, um den gleichen Effekt zu erzielen und gleichzeitig einen Überlauf für alle Elemente zuzulassen.
.c:after{
clear: both;
content: "";
display: block;
}
Sie schweben die Kinder, was bedeutet, dass sie vor dem Container "schweben". Um die richtige Höhe zu erreichen, müssen Sie den Schwimmer "räumen"
Der div style = "clear: both" löscht das Floating und gibt dem Container die richtige Höhe. Weitere Informationen zu Floats finden Sie unter http://css.maxdesign.com.au/floatutorial/clear.htm .
z.B.
<div class="c">
<div class="l">
</div>
<div class="m">
World
</div>
<div style="clear: both" />
</div>
Die beste und kugelsicherste Lösung ist das Hinzufügen ::before
und ::after
Pseudoelemente zum Behälter. Wenn Sie zum Beispiel eine Liste haben wie:
<ul class="clearfix">
<li></li>
<li></li>
<li></li>
</ul>
Und jedes Element in der Liste hat eine float:left
Eigenschaft, dann sollten Sie Ihrem CSS hinzufügen:
.clearfix::after, .clearfix::before {
content: '';
clear: both;
display: table;
}
Oder Sie könnten eine display:inline-block;
Eigenschaft ausprobieren , dann müssen Sie keinen Clearfix hinzufügen.