Essentially, you need an additional wrapping div for two βsmallβ elements, for example:
* { margin: 0; padding: 0; box-sizing: border-box; } .wrap { width: 75%; margin: 1em auto; border: 1px solid green; padding: .25em; display: flex; flex-wrap: wrap; } .wrap div { border: 1px solid grey; margin-bottom: 1px; } .box { height: 80px; background: lightblue; flex: 0 0 50%; } .tall { flex: 0 0 65%; height: 160px; } .col { flex: 0 0 35%; display: flex; flex-wrap: wrap; } .mini { flex: 0 0 100%; height: 80px; background: pink; }
<div class="wrap"> <div class="box"></div> <div class="box"></div> <div class="box tall"></div> <div class="box col"> <div class="mini"></div> <div class="mini"></div> </div> </div>
I used one common element here with packaging, but the image suggests that it would be much simpler with the actual lines and the extra wrapper mentioned earlier.
Codepen demo of the second option with strings.
Paulie_d
source share