Lassen Sie das äußere div automatisch die gleiche Höhe wie sein schwebender Inhalt haben
Lesezeit: 4 Minuten
Jase Whatson
Ich will das Äußere div, das schwarz ist, um es einzuwickeln divschwebt darin. möchte ich nicht verwenden style="height: 200px in dem div mit dem outerdiv id, da ich möchte, dass es automatisch die Höhe seines Inhalts hat (z. B. die schwebende divS).
#outerdiv {
overflow: hidden; /* make sure this doesn't cause unexpected behaviour */
}
Sie können dies auch tun, indem Sie am Ende ein Element mit hinzufügen clear: both. Dies kann normal, mit JS (keine gute Lösung) oder mit hinzugefügt werden :after CSS-Pseudoelement (in älteren IEs nicht weit verbreitet).
Das Problem ist, dass Container nicht natürlich erweitert werden, um schwebende Kinder einzuschließen. Seien Sie gewarnt, wenn Sie das erste Beispiel verwenden, wenn Sie untergeordnete Elemente außerhalb des übergeordneten Elements haben, werden diese ausgeblendet. Sie können auch „auto“ als Eigenschaftswert verwenden, aber dies wird Bildlaufleisten aufrufen, wenn irgendein Element außerhalb erscheint.
Sie können auch versuchen, den übergeordneten Container zu schweben, aber je nach Ihrem Design kann dies unmöglich/schwierig sein.
Ich wünschte, ich hätte die Logik des Überlaufs verstanden: in diesem Fall versteckte Werke.
– Meisterschule
30. August 13 um 14:28 Uhr
Ja, ich hatte gehofft, dass nicht nur ich das für kontraintuitiv hielt. Alex?
– normales Mikrofon
30. August 13 um 14:49 Uhr
@masteroleary @regularmike HTML/CSS war noch nie eine gute UI-Technologie, daher sind kontraintuitive Dinge darin durchaus üblich 🙂
– Juri Nakonechny
8. November 13 um 17:21 Uhr
@masteroleary Mir ist klar, dass dies ein alter Thread ist, aber ich habe kürzlich versucht, eine ähnliche Frage unter stackoverflow.com/questions/21041297#21041625 zu beantworten – ich hoffe, es hilft
– xec
11. Januar 14 um 23:34 Uhr
+1 für die float Lösung. Funktioniert sehr gut mit den anderen Fehlern, besonders wenn sie mit Twitter Bootstrap gekoppelt sind.
– Fizzix
30. April 14 um 23:31 Uhr
Lykan
Erstens empfehle ich dringend, dass Sie Ihr CSS-Styling in einer externen CSS-Datei erstellen, anstatt es inline zu tun. Es ist viel einfacher zu warten und kann mithilfe von Klassen besser wiederverwendet werden.
Wenn Sie Alex ‘Antwort (& Garrets Clearfix) “Hinzufügen eines Elements am Ende mit clear: both” abarbeiten, können Sie es so machen:
Das funktioniert (aber wie Sie sehen können, ist Inline-CSS nicht so schön).
Warum wurde ich herabgestuft? Es funktioniert, und ich habe zu Recht zugegeben, dass es keine schöne Lösung war.
– Lykan
30. April 09 um 0:58 Uhr
Ich bin mir nicht sicher, ich hätte +1 gegeben, um Sie zumindest auf 0 zurückzusetzen. Vielleicht wurden Sie abgelehnt, weil Sie sein falsches CSS nicht korrigiert haben … dh die Verwendung von Gleichheitszeichen zum Festlegen einer CSS-Eigenschaft ist falsch.
– Alex
30. April 09 um 1:05 Uhr
Meinetwegen. Ich schätze die +1 alex. Ich dachte, meine Aussage sei fair.
– Lykan
30. April 09 um 1:09 Uhr
Diese Lösung ist besser IMO. Ich hätte diese Antwort akzeptiert, wenn es meine Frage gewesen wäre.
Also vielleicht beides versuchen overflow: auto (funktioniert normalerweise) oder overflow: hidden, wie Alex sagte.
versteckt funktioniert, aber du hast recht, auto funktioniert etwas besser. Danke.
– Matthäus Setter
1. Mai ’12 um 10:47 Uhr
Nande
Ich weiß, manche Leute werden mich hassen, aber ich habe es gefunden display:table-cell in diesen Fällen zu helfen.
Es ist wirklich sauberer.
Zunächst einmal verwenden Sie nicht width=300px das ist eine Attributeinstellung für das Tag, nicht CSS, verwenden width: 300px; stattdessen.
Ich würde vorschlagen, die anzuwenden clearfix Technik auf der #outerdiv. Klarfix ist eine allgemeine Lösung zum Löschen von 2 Floating-Divs, sodass das übergeordnete Div erweitert wird, um die 2 Floating-Divs aufzunehmen.