#html #css #flexbox
Вопрос:
Я хочу, чтобы эти элементы реагировали, проблема, с которой я сталкиваюсь, заключается в том, что, как только элементы увеличиваются до 300 пикселей, четвертый элемент опускается, и он становится 3 элементами вверху, а четвертый элемент находится один внизу во всю ширину. Я хочу, чтобы они всегда были 4, 2 х 2 и 1 х 4 по мере уменьшения размера экрана.
.wrapper {
display: flex;
flex-wrap: wrap;
}
.item {
flex-basis: 300px;
flex-grow: 2;
height: 40rem;
color: #fff;
background-color: black;
}
<div class="wrapper">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
</div>
Комментарии:
1. Вам следует рассмотреть возможность использования сетки
Ответ №1:
Пример того, что вы хотите с display: grid;
.wrapper {
display: grid;
grid-template-columns: repeat(2, minmax(200px, 1fr));
grid-template-rows: repeat(2, minmax(200px, 1fr));
gap: 10px;
}
.item {
color: #fff;
background-color: orange;
}
@media screen and (max-width: 580px) {
.wrapper {
grid-template-columns: auto;
grid-template-rows: repeat(4, minmax(200px, 1fr));
}
}
@media screen and (min-width: 1280px) {
.wrapper {
grid-template-columns: repeat(4, minmax(200px, 1fr));
}
}
<div class="wrapper">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
</div>
Комментарии:
1. это не делает 4 элемента на рабочем столе, он начинается с 2 x2, а затем 1 x 4
2. Я обновил представление кода и добавил дополнительный медиа-запрос. Или вы имеете в виду 4×4 на рабочем столе ?