Вот. Я использовал те же размеры и размеры из вашего примера.
Зависит от ширины дочерних элементов
#box {
display: inline-grid;
grid-auto-flow: column;
grid-template-columns: auto;
grid-auto-rows: 100px;
column-gap: 10px;
outline: 1px solid blue;
}
.item {
background: gray;
width: 50px;
}
<div id='box'>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
</div>
Зависит от родительской ширины
#box {
display: grid;
grid-auto-flow: column;
grid-template-columns: auto;
grid-auto-rows: 100px;
column-gap: 10px;
outline: 1px solid blue;
width: 230px;
}
.item {
background: gray;
}
<div id='box'>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
</div>
ОБНОВЛЕНО
Когда размер родительского элемента составляет 100% ширины, а количество дочерних элементов не определено.
#box {
width: 100%;
display: grid;
grid-template-columns: repeat(auto-fill, 50px);
grid-auto-rows: 100px;
column-gap: 10px;
outline: 1px solid blue;
}
.item {
background: gray;
}
<div id='box'>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
<div class='item'></div>
</div>
Теперь мы знаем, что ваш случай может быть решен с помощью grid
, но я предлагаю вам использовать flex
. Использование grid
для этой задачи похоже на удар молотком по винту - мы можем достичь цели, но используя неправильный инструмент. Grid
более полезно для таблиц с необычной схемой продаж, лучше, если мы знаем количество столбцов. И Flex
полезнее для списков элементов, как в вашем случае. Хотя Flex
более старый и более родной, чем Grid
, он работает намного стабильнее во всех современных браузерах.