Вы можете использовать max-content
вместо auto
в своем определении столбца - и чтобы скорректировать переполнение container
(если ширина экрана несколько), вы можете использовать overflow: auto
- изменить ширину экрана и проверить демонстрациюниже:
.container {
background-color: tomato;
width: 100%;
color: black;
display: grid;
grid-template-columns: repeat(5, max-content); /* added */
grid-gap: 5px 5px;
overflow: auto; /* handle overflow if needed */
}
.child {
border: 1px solid black;
}
<div class="container">
<div class="child">apple</div>
<div class="child">social</div>
<div class="child">cat</div>
<div class="child">computer</div>
<div class="child">table</div>
<div class="child">photograph</div>
<div class="child">future of the world</div>
<div class="child">something</div>
<div class="child">yellow</div>
<div class="child">romance</div>
<div class="child">dictionary</div>
<div class="child">a very very very very long label</div>
</div>
Если вы хотите, чтобы столбцы совместно использовали доступное пространство области просмотра по горизонтали, вы также можете использовать функцию minmax
, например grid-template-columns: repeat(5, minmax(max-content, 1fr))
:
.container {
background-color: tomato;
width: 100%;
color: black;
display: grid;
grid-template-columns: repeat(5, minmax(max-content, 1fr)); /* added */
grid-gap: 5px 5px;
overflow: auto; /* handle overflow if needed */
}
.child {
border: 1px solid black;
}
<div class="container">
<div class="child">apple</div>
<div class="child">social</div>
<div class="child">cat</div>
<div class="child">computer</div>
<div class="child">table</div>
<div class="child">photograph</div>
<div class="child">future of the world</div>
<div class="child">something</div>
<div class="child">yellow</div>
<div class="child">romance</div>
<div class="child">dictionary</div>
<div class="child">a very very very very long label</div>
</div>