Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to create flexbox responsive layout with multiple columns and rows

Tags:

html

css

flexbox

I'm trying to create a mobile & desktop responsive container that looks like this. The base HTML looks like the following and I can add any elements or classes as needed.

<div class="container">
  <div class="box1">1</div>
  <div class="box2">2</div>
  <div class="box3">3</div>
</div>

My own attempt led me to this. The desktop version is just how I want it. But boxes 2 and 3 on mobile are swapped. I want it to display vertically and sequentially from 1 to 3. If I could put a container on 2 and 3, I would be able to use flex-direction: column-reverse in the media query but then the desktop view would be incorrect because I need the container on boxes 1 and 3 to put them in a column and set the flex-basis. Any input on how else to approach this would be appreciated.

like image 979
Jackson Avatar asked Mar 27 '26 19:03

Jackson


1 Answers

One approach is to wrap your first two divs in a container, and set their flex-direction to row for your desktop view.

Then change the flex-direction to column at your mobile breakpoint (I've used 600px):

.container {
  display:flex;
  flex-direction:column;
}

.row-container {
  display:flex;
  flex-direction:row;
  justify-content:space-between;
}

.box {
  border:3px solid #000;
  width:300px;
  height:300px;
  margin-bottom:10px;
}

.box2 {
  width:200px;
  height:200px;
 }

@media only screen and (max-width: 600px) {
  .row-container {
    flex-direction:column;
  }
  
  .box2 {
    width:300px;
    height:300px;
  }
}
<div class="container">
  <div class="row-container">
    <div class="box1 box">1</div>
    <div class="box2 box">2</div>
  </div>
  <div class="box3 box">3</div>
</div>
like image 163
dave Avatar answered Mar 31 '26 06:03

dave



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!