Flex-box ignoriert eingewickelt Kinder-Marge (Marge Zusammenbruch)
Angesichts des folgenden HTML-Code:
<div class="outer">
<div>
<div class="inner">A</div>
</div>
</div>
<div class="outer">
<div class="inner">B</div>
</div>
und die folgenden CSS - (prefix-free):
.outer {
display: box;
box-orient: vertical;
height: 100px;
width: 100px;
background: red;
margin: 10px;
}
.inner {
height: 50px;
margin-top: 10px;
background: green;
}
Hier ist ein CodePen.
A
verpackt in einem <div>
so ist es Marge wird ignoriert.
Q: Wie kann ich erreichen B
's Verhalten für A
(margin) mit dem flex-box-Modell?
Hinweis: Die div-Wrapper kann gehen mehrere Ebenen tief
Ausrichtung: neueste Chrome/Safari/iOS
Danken Ihnen sehr für Ihre Hilfe!
Edit: Dank @JoséCabo ich kam mit dieser:
.outer {
display: flex;
flex-direction: column;
height: 100px;
width: 100px;
background: red;
margin: 10px;
}
.inner {
height: 50px;
margin-top: 10px;
background: green;
}
Chrome:
Safari:
Leider es funktioniert nicht in Safari wie erwähnt von @cimmanon, so brauche ich noch etwas Hilfe.
- Wussten Sie, dass box-API ist veraltet? Sie haben die Verwendung von display: flex; api statt.
- Das ist das Ergebnis wollen Sie bekommen? Sorry, aber ich verstehe dich nicht.
- Die Eigenschaften, die verwendet werden sollte, hängt stark von dem browser, die Sie sind targeting. Safari, zum Beispiel, folgt man der älteren specs.
- das zweite Ergebnis (B) ist die gewünschte ein, aber es sollte funktionieren mit diesen div-Wrapper zwischen
.outer
und.inner
wie in (A). Danke!!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was Sie suchen eigentlich nichts zu tun hat mit Flexbox, aber was heißt Marge Zusammenbruch
Die neben der Grenze hat verhindert, dass die Marge kollabiert. Anstatt sich auf die Margen, würde ich empfehlen, eine Polsterung für den übergeordneten container:
Beispiel:
CSS:
HTML:
Nun decken alle Ihre Präfixe, brauchen Sie etwas wie dieses:
.inner
. Im Idealfall würde ich mag, um änderungen an.inner
nur. Aber der margin-collapse was ist sth. Ich kann darauf aufbauen. Ich danke Ihnen sehr!Schließlich kam ich auf die richtige Lösung (für mein spezifisches problem).
CodePen
Ich bin mit
display: inline-block
auf.inner
zu deaktivieren Marge reduzieren und dann kompensieren die verlorenen Breite mitwidth: 100%
.Alle der Kredit geht an cimmanon für den Hinweis mich in die richtige "margin collapse" Richtung