Установите гибкие элементы для переноса на ваших точках останова.
Вот демоверсия скрипки .
.container {
display: flex;
flex-wrap: wrap;
height: 100vh;
}
.column {
flex: 1;
border: 1px solid black;
background-color: lightgray;
}
@media (max-width: 720px) {
.column {
flex-basis: 34%;
background-color: orange;
}
}
@media (max-width: 600px) {
.column {
flex-basis: 51%;
background-color: lightgreen;
}
}
body {
margin: 0;
}
<div class="container">
<div class="column"></div>
<div class="column"></div>
<div class="column"></div>
<div class="column"></div>
</div>
Обратите внимание, что с flex-grow: 1
, определенным в сокращении flex
, нет необходимости в том, чтобы flex-basis
был точным (25%, 50%, 100%), что может привести к неравному переносу, если вы добавите маржу пространство.
Поскольку flex-grow
будет занимать свободное место в строке, flex-basis
должно быть достаточно большим, чтобы обеспечить перенос. Это обеспечит достаточно места для полей, но не хватит места для дополнительного предмета.