Прежде всего, обратите внимание, что обычно медиа-запросы должны быть в конце стиля css, поэтому вы избегаете их перезаписи по ошибке (в этом случае именно поэтому background-color: olive;
не работает, независимо от размера окна ).
Во-вторых, решение действительно во многом зависит от данных. Предполагая, что у вас всегда будет только 6 ящиков и фиксированная ширина для контейнера и для ящиков, вы можете сделать что-то вроде этого:
.row {
display:flex;
flex-direction: column;
flex-wrap: wrap-reverse;
height:500px;
align-content: flex-start;
}
.col {
margin: 11px;
width: 80px;
height: 80px;
background-color: aqua;
}
@media screen and (max-width: 400px) {
.col {
background-color: olive;
}
}
@media only screen and (min-width: 321px) {
.col {
background-color: olive;
}
}
@media only screen and (max-width: 200px) {
.row {
height: auto;
}
}
<html>
<head>
</head>
<body>
<div class="row">
<div class="col">1</div>
<div class="col">2</div>
<div class="col">3</div>
<div class="col">4</div>
<div class="col">5</div>
<div class="col">6</div>
</div>
</body>
</html>
Обратите внимание, что height: 500px;
можно изменить, если вам нужно. Может быть даже проц или что-то еще в зависимости от структуры вашей страницы и ваших потребностей. Если вам нужно что-то более общее c, то не существует идеального общего решения. Но вы можете попытаться найти лучший в зависимости от ваших данных.