2009-07-23 3 views
2

Ich habe einige unerklärliche Seltsamkeit mit einem verschachtelten Div-Rand, der aus dem übergeordneten Container "leckt".Undichter Rand: Unerwarteter Versatz aufgrund verschachtelter DIVs

Die folgende Testfall * wahrscheinlich erklärt es am besten:

http://jsbin.com/ibaze

Die äußere Hülle (rot) beginnt nicht an der Spitze - es sei denn, ein Textknoten ist oder overflow: auto; auf dieses Element. (Getestet auf Firefox und Safari.)

Während Überlauf mir erlaubt, das Problem zu umgehen, würde ich gerne wissen, warum es in erster Linie passiert. Alle Einsichten würden geschätzt werden!

  * es ist ein minimaler Testfall außer für das Skript an der Unterseite, die lediglich die Abhilfen

Antwort

2

Der Grund zeigt, warum es nicht funktioniert, ist, dass Ihre vertikale Marge in CSS kollabiert, welches Verhalten erwartet wird.

Entfernen Sie die Marge von #inner und stattdessen angeben, ein padding: 50px; auf Ihre #outer das gewünschte Ergebnis zu erhalten:

* { 
    margin: 0; 
    padding: 0; 
} 

body { 
    color: white; 
    background-color: blue; 
} 

#outer { 
    padding: 50px; 
    background-color: red; 
} 

#inner { 
    background-color: green; 
} 

Weitere Informationen über Vertical Margin Collapsing, empfehle ich Ihnen den folgenden Artikel zu lesen:

CSS - Auto-height and margin-collapsing

+1

http://www.w3.org/TR/CSS2/box.html Ein guter Lesevorgang, um das HTML Box-Modell zu verstehen. – Philippe

+0

** @ Philippe: ** Ja, aber ich neige dazu, nicht auf W3C zu verlinken, da einige Leute die Standards Dokumente ein wenig trocken zum Lesen finden. –

+0

Danke! Sieht so aus, als müsste ich das Box-Modell nochmal besuchen (es ist schon eine Weile her, seit ich CSS-Sachen gemacht habe ...). – user143736

Verwandte Themen