2012-07-26 11 views
25

Ich bin auf einen Fall gestoßen, wo ich einen Kinderrand brauche, um einen Elterncontainer zu erweitern. Ich habe festgestellt, dass der Bereich außerhalb des übergeordneten Elements zugewiesen ist, das übergeordnete Element selbst jedoch nicht erweitert ist. Ich fand dann, dass durch das Hinzufügen von `overflow: hidden 'zum Eltern könnte ich dieses Problem beheben.Warum expandieren vertikale vertikale Ränder nicht den übergeordneten Container?

Kann jemand etwas Licht auf warum dies der Fall ist?

UPDATE:

ich gefunden habe, dass die Mutter jede Polsterung oder Randwert auch das Hinzufügen diesen fixiert.

Updated Example

+1

+1 Gute Frage. Habe diesen Fix seit Ewigkeiten benutzt .. die ganze Zeit ohne den Grund zu kennen .. Würde das gerne auch wissen .. – techfoobar

+0

Ist das der einzige Fix? Es ist ärgerlich, mit den Konsequenzen von 'overflow: hidden;' – wilsonpage

+1

umzugehen. Eine Lösung besteht darin, dem Elternteil "padding: 10px" zu geben, anstatt dem Kind einen Rand zu geben. – techfoobar

Antwort

15

Die Antwort auf "Warum" wird beschrieben gut und prägnant here. Es gibt bestimmte Eigenschaften, die eine "block formatting context" festlegen. Nämlich:

Floats, absolut [und befestigt] positionierte Elemente Block Behälter (wie inline-Blöcke, tabellen Zellen und tabellen Bildunterschriften), die nicht Boxen ist Block und Block-Box mit ‚Überlauf 'außer' visible '(außer , wenn dieser Wert in das Ansichtsfenster übernommen wurde), erstellen Sie neue Blockformatierungskontexte für deren Inhalt.

Es ist diese Veränderung der Blockforma Zusammenhang, dass der Grund dafür ist, warum solche Lösungen, wie oben in der Arbeits Anmerkungen gegeben, wie margin (und im Fall von a float vorhergehenden, padding des einströmenden Elemente folgende) betreibt .

+2

Der verknüpfte Artikel ist nicht mehr in der Domäne colinaarts.com verfügbar, aber verfügbar [hier] (https://web.archive.org/web/20150423190902/http://colinaarts.com/articles/the-magic- von-overflow-versteckt /). Einfach und auf den Punkt gebracht. Vielen Dank! – coderfin