Flexbox: Layout with Rows
My HTML is like the following example
<div id="wrapper"> <div id="a">a</div> <div id="b">b</div> <div id="c">c</div> <div id="d">d</div> </div> On the desktop, I would like divs to appear next to each other, which, of course, is trivial.
On a mobile phone, I need a tabular layout similar to the following

b, c and d have a flexible height, so you have to adapt to this.
Is it possible to do without wrapping b, c and d in a separate div?
+7
MarcS
source share2 answers
Yes, you can do this completely with flexbox ... of course, you will need to choose the width for the first div with the smaller viewports, but I assume that you keep this in mind, ready for the required media request.
#wrapper { height: 100vh; width: 90vw; border: 1px solid grey; display: flex; flex-direction: column; flex-wrap: wrap; margin: 10px auto; } #wrapper div { flex: 1 0 auto; border: 1px solid white; background: lightblue; text-align: center; } #a { flex-grow: 1; height: 100%; flex-basis: 50%; } @media screen and (min-width: 640px) { #a { height: auto; flex-grow: none; flex-basis: auto; } } <div id="wrapper"> <div id="a">a</div> <div id="b">b</div> <div id="c">c</div> <div id="d">d</div> </div> +5
Paulie_d
source shareUse only flexbox when necessary: ββon the desktop version:
* { box-sizing: border-box; } body { margin: 0; } #a { background: tomato; } #b { background: forestgreen; } #c { background: dodgerblue; } #d { background: orange; } #wrapper { overflow: hidden; position: relative; } #wrapper > div { float: left; width: 50%; margin-left: 50%; padding: 5px; } #wrapper > #a { position: absolute; height: 100%; margin-left: 0; } @media all and (min-width: 768px) { #wrapper { display: flex; } #wrapper > div { margin-left: 0; } #wrapper > #a { position: relative; height: auto; } <div id="wrapper"> <div id="a">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl.</div> <div id="b">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper. Duis arcu massa, scelerisque vitae, consequat in, pretium a, enim. Pellentesque congue. Ut in risus volutpat libero pharetra tempor. Cras vestibulum bibendum augue. Praesent egestas leo in pede. Praesent blandit odio eu enim. Pellentesque sed dui ut augue blandit sodales. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Aliquam nibh.</div> <div id="c">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius.</div> <div id="d">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed non risus. Suspendisse lectus tortor, dignissim sit amet, adipiscing nec, ultricies sed, dolor. Cras elementum ultrices diam. Maecenas ligula massa, varius a, semper congue, euismod non, mi. Proin porttitor, orci nec nonummy molestie, enim est eleifend mi, non fermentum diam nisl sit amet erat. Duis semper.</div> </div> 0
zessx
source share