Надеемся, что это приведет вас в правильном направлении.
Я сделал CSS
, чтобы он был мобильным. Итак, первый медиа-запрос предназначен для планшетов, второй - для настольных ПК, а width: 100%
- для мобильных устройств, поэтому, очевидно, будет отображаться один столбец. Вы можете изменить это, чтобы удовлетворить то, что вам нужно. Поиграйте с ним и комментируйте любые вопросы, и я посмотрю:)
Подход FlexBox
flex-direction Свойство CSS flex-direction устанавливает, как элементы flex размещаются в контейнере flex, определяя главную ось и направление (нормальное или обратное). Посмотрите примеры здесь
flex-flow Свойство flex-flow CSS является сокращенным свойством для свойств flex-direction и flex-wrap. Прочитайте здесь
justify-content Свойство CSS justify-content определяет, как браузер распределяет пространство между элементами содержимого и вокруг них вдоль главной оси гибкого контейнера и встроенной оси контейнера сетки. Прочитайте здесь
.grid-container {
display: flex;
flex-direction: row;
flex-flow: row wrap;
justify-content: space-between;
width: 100%;
}
.grid-item {
display: flex;
background-color: orange;
width: calc(100% - 10px);
margin: 5px
}
@media (min-width: 720px) {
.grid-item {
width: calc(33.333% - 10px);
}
}
@media (min-width: 1020px) {
.grid-item {
width: calc(25% - 10px);
}
}
<div class='grid-container'>
<div class='grid-item'>item 1</div>
<div class='grid-item'>item 2</div>
<div class='grid-item'>item 3</div>
<div class='grid-item'>item 4</div>
<div class='grid-item'>item 5</div>
<div class='grid-item'>item 6</div>
</div>
Помните, что если вы измените значение маржи на 20px
, вам также придется изменить значение width
, так как оно делает это:
width: calc(grid-item-desired-width% - margin);
Я бы действительно рекомендовал прочитать ссылку выше, поскольку все они имеют интерактивные демонстрации, которые дадут вам наглядный пример того, как работают эти свойства flexbox. Я также рекомендовал бы просто поиграть с flex-box и, возможно, попробовать разные значения, чтобы увидеть, как они действуют на вашей сетке. Это лучший способ выучить это и застрять в голове. Надеюсь, вы найдете это полезным.
Подход CSS Grid
Другой способ - использование CSS Grid
. Не был уверен, какой путь ты хочешь, но я лично пошел бы с flexbox. В случае, если вы хотите, чтобы это было ниже, используется CSS-сетка
.grid-container {
display: grid;
grid-template-columns: auto;
padding: 10px;
grid-gap: 10px 10px;
}
.grid-item {
border: 1px solid black;
padding: 20px;
font-size: 30px;
text-align: center;
}
@media (min-width: 720px) {
.grid-container {
grid-template-columns: auto auto auto;
}
}
@media (min-width: 1020px) {
.grid-container {
grid-template-columns: auto auto auto auto;
}
}
<div class='grid-container'>
<div class='grid-item'>item 1</div>
<div class='grid-item'>item 2</div>
<div class='grid-item'>item 3</div>
<div class='grid-item'>item 4</div>
<div class='grid-item'>item 5</div>
<div class='grid-item'>item 6</div>
</div>