2017-01-05 9 views
0

Kann ein Flexcontainer (A) absolut vor oder hinter einem anderen Flexcontainer (B) positioniert werden und trotzdem die Flexeigenschaften seiner Kinder beibehalten?Kann ein Flexbox-Container absolut positioniert werden?

Mein Problem: Wenn ich einen Flex-Container (B) der Position: absolute zuweisen, verlieren die untergeordneten Inhalte die automatischen Flex-Eigenschaften. Wenn ich zurück in Position: relativ gehe, funktioniert Flex wieder. Wenn der Behälter (B) relativ ist, kann ich den anderen flexiblen Behälter (A) nicht wie gewünscht überlagern.

Forschung: Fanden alles auf absolute Positionierung von Kindern in Eltern Flex Containern (W3C und CSS-Tricks, etc.), aber nichts spezifisch genug, Flex Container absolut über einen anderen Flex-Container bewegt werden (was mich fragt, ob es überhaupt möglich ist!). Wenn das so ist, werde ich mich freuen.

Ultimatives Ziel: Sie möchten einen benachbarten Flex-Container gegenüber einem anderen mit anderen Z-Indizes überlagern.

Vielen Dank im Voraus.

+1

* Flex Artikel * mit absoluter Positionierung flex Eigenschaften ignoriert. Ein * Flex-Container * mit absoluter Positionierung ist in Ordnung. Es sei denn natürlich, der Container ist auch ein Gegenstand. Sie sollten Ihren Code veröffentlichen, damit wir das Problem reproduzieren können. –

+0

erstellen Sie ein Elternteil als absolutes Element. Und sein Kind mit flexiblen Eigenschaften. Oder einfach nur relative Positionierung und Anwendung Z-Index für den Overlay-Container –

+0

relative Positionierung mit Z-Index funktioniert wie ein Charme (jetzt haben zwei Methoden) -thanks –

Antwort

0

Da wir nicht wissen, wie Ihr ursprünglicher Code aussieht, ist hier ein generelles Layout mit einem Flex Container, der absolut übereinander positioniert ist.

Um das position: absolute Element als seine Geschwister machen ausrichten, wickelte ich sie beide und gab den zweiten width: 100%

.wrap { 
 
    position: relative; 
 
} 
 
.a, .b { 
 
    display: flex; 
 
    height: 120px; 
 
    left: 0; 
 
    top: 0; 
 
} 
 
.a { 
 
    background: red; 
 
} 
 
.b { 
 
    position: absolute; 
 
    top: 50px; 
 
    height: 50px; 
 
    width: 100%; 
 
    background: blue; 
 
} 
 
.wrap > div > div { 
 
    flex: 1; 
 
    padding: 20px 50px; 
 
    margin: 5px; 
 
    background: green; 
 
} 
 
.wrap div div:first-child { 
 
    flex-basis: 50%; 
 
}
<div class="wrap"> 
 
    <div class="a"> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
    </div> 
 

 
    <div class="b"> 
 
    <div></div> 
 
    <div></div> 
 
    <div></div> 
 
    </div> 
 
</div>

+0

Der obige Code funktioniert perfekt für das Szenario, das ich versuchte. Kannst du mir sagen, dass ich neu bin? (; Danke –

+0

@RobertBepko 'flexbox' ist einfach und kompliziert, so, wie man weiß, ist etwas nicht eine klare Antwort. Dieser Artikel, [Eine komplette Anleitung zu flexbox] (https://css-tricks.com/snippets/css/ a-guide-to-flexbox /), ist gut.Lesen Sie es, und lesen Sie es noch einmal, und immer noch, wenn Sie denken, dass Sie es wissen, kommt etwas, das sich nicht wie Sie einmal dachten. – LGSon

+0

Danke. Das Flexbox-Seite Im Nachhinein ist der Teil, den ich übersehen habe, die Flex-Basis- und Breiteneigenschaften, die Sie oben erklärt haben. Ohne sie wird die Zeile in meinem Projekt schmaler, wenn Sie b auswählen: absolut (b in diesem Fall). Beste! –

Verwandte Themen