для этого в флексе можно упорядочивать элементы по номерам, с помощью order. И в нужном разрешении медиазапроса вложить container в общий поток. Чтобы его, как блок-родителя не определяло.
вот пример.
.box{
display: flex;
flex-wrap: wrap;
justify-content: center;
}
.container{
display: flex;
flex-direction: column;
}
.block{
width: 500px;
height: 200px;
}
.block1{
background: #f00;
order: 1;
}
.block2{
background: #ff0;
order: 2;
}
.block3{
background: #f0f;
order: 3;
height: 400px;
}
@media (max-width: 600px) {
.container {
display: contents;
}
.block1{
background: #f00;
order: 1;
}
.block2{
background: #ff0;
order: 3;
}
.block3{
background: #f0f;
order: 2;
height: 200px;
}
}
Именно правый блок становится в мобильной версии вторым