Адаптация трехколоночного макета на flexbox

Прошу помочь разобраться а адаптацией стандартного трехколоночного макета с основным блоком в центре и двумя сайдбарами по бокам: https://jsfiddle.net/jkps6ugq/, размеры блоков фиксированные.

Необходимо, чтобы при уменьшении размера окна правый сайдбар залез под левый, а основной так и оставался на месте. По сути, внешний вид должен получиться как у двухколоночного макета, в левой части два блока один под другим, а в правой основной.

Пробовал играться с order, направлениями осей - ничего толкового не вышло. Возможно ли вообще такое сделать средствами flexbox (без JS и без абсолютного позиционирования)?

.main {
  display: flex;
  flex-direction: row;
  justify-content: space-around;
  background: #ccc;
  width: 600px;
  height: 400px;
}

.red {
  background: red;
  width: 100px;
  height: 100px;
}

.green {
  background: green;
  width: 300px;
  height: 300px;
}

 .blue {
  background: blue;
  width: 100px;
  height: 100px;
}
<div class="main">
  <div class="red"></div>
  <div class="green"></div>
  <div class="blue"></div>
</div>


Ответы (1 шт):

Автор решения: Михаил Камахин

Не знаю как на флексах, вот на гридах.

*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

.main {
  display: grid;
  height: 400px;
  width: 600px;
  grid-template-columns: 100px 300px 100px;
  background: #ccc;
  justify-content: space-around;
  grid-template-rows: 100px 100px 100px;
  grid-template-areas: 
            "a b c"
            ". b ."
            ". b .";
}

.red {
  grid-area: a;
  background: red;
}

.green {
  grid-area: b;
  background: green;
}

.blue {
  grid-area: c;
  background: blue;
}

@media (max-width: 600px) {
  .main {
    grid-template-areas: 
            "a b ."
            "c b ."
            ". b .";
  }
}
<div class="main">
  <div class="red"></div>
  <div class="green"></div>
  <div class="blue"></div>
</div>

→ Ссылка