2016-08-12 10 views
0

Ich habe ein Drahtgitter unten und möchte sehen, was ist der beste Weg, um dies mit flexbox zu kodieren.Einstellung Layout mit Flexbox

Ich habe eine simple flexbox grid system codiert, aber mein Drahtmodell erfordert mehr Anpassung als das, was ich auf meinem Grid-System habe.

enter image description here

Ich habe Eltern div display: flex hat und haben 2 Kind divs haben flex:1 und flex: 0 0 40%. Was ist der beste Weg, Inhalt div (graue Kästchen innen auf blau und rot), die mit Rest des Haupt-Wrapper bleiben (gesamte graue Box setzt auf max-width: 1400px)?

Vielen Dank.

+0

Duplizieren - http://stackoverflow.com/questions/28565976/css-how-to-overflow-from-div-to-full-width-of-screen –

+0

@Paulie_D Ja, es wird ein Hintergrundbild und eine Farbe geben. Es ist eine völlig andere Frage (Layout) und die andere verwendet nicht einmal "flexbox" – Ohsik

+0

Im Moment ist dies entweder ein Duplikat oder eine Meinung basiert und wahrscheinlich geschlossen werden. Wenn Sie den "besten Weg" -Teil der Frage entfernen und sich mit dem praktischen Problem befassen können, das Sie haben, könnte es positivere Aufmerksamkeit erhalten. Trotzdem denke ich, es ist ein Duplikat der Q & A, die ich verlinkt habe. –

Antwort

1

Hier ist die allgemeine Idee.

Positionierte Pseudoelemente, eines für jeden Abschnitt der Zeile. Bei geeigneter Breite (beachten Sie, dass die bodyoverflow-x:hidden haben sollte) und entsprechende Positionswerte.

* { 
 
    box-sizing: border-box; 
 
} 
 
body { 
 
    overflow-x: hidden; 
 
} 
 
.wrapper { 
 
    min-height: 100vh; /* for demo purposes */ 
 
    width: 60%; 
 
    margin: auto; 
 
    background: grey; 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 
header { 
 
    height: 20vh; 
 
    background: green; 
 
} 
 
.inner { 
 
    height: 30vh; 
 
    display: flex; 
 
} 
 
main { 
 
    background: blue; 
 
    flex: 1; 
 
    border: 2px solid black; 
 
} 
 
aside { 
 
    background: red; 
 
    flex: 0 0 40%; 
 
    border: 2px solid black; 
 
} 
 
.other { 
 
    background: pink; 
 
    flex: 1; 
 
} 
 
/* magic section */ 
 

 
.extend { 
 
    position: relative; 
 
} 
 
.extend::after { 
 
    content: ''; 
 
    position: absolute; 
 
    width: 100vw; 
 
    top: 0; 
 
    height: 100%; 
 
    background: inherit; 
 
    z-index: -1; 
 
} 
 
.left::after { 
 
    right: 0; 
 
} 
 
.right::after { 
 
    left: 0; 
 
}
<div class="wrapper"> 
 
    <header></header> 
 
    <div class="inner"> 
 
    <main class="extend left"></main> 
 
    <aside class="extend right"></aside> 
 
    </div> 
 
    <div class="other"></div> 
 
</div>

+0

Es funktioniert für mich. Danke für die Antwort! Dies ist ein guter Tipp! – Ohsik