auto
Значение auto
принимает длину контейнера и равномерно распределяет это пространство по дорожкам auto
. В этом примере три столбца имеют одинаковую ширину. Вместе они потребляют всю ширину контейнера.
grid-template-columns: auto auto auto
.grid {
width: 500px;
display: grid;
grid-template-columns: auto auto auto;
border: 1px solid black;
background-color: black;
grid-gap: 1px;
}
.item-span {
/* display: none; */ /* toggle this */
background-color: white;
color: #3a843a;
grid-column: 1 / -1;
}
.text {
padding: 5px;
white-space: nowrap;
}
.item {
background-color: white;
}
<div class="grid">
<div class="item"><span class="text">item 1</span></div>
<div class="item"><span class="text">item 2</span></div>
<div class="item"><span class="text">item 3</span></div>
<div class="item"><span class="text">item 4</span></div>
<div class="item"><span class="text">item 5</span></div>
<div class="item"><span class="text">item 6</span></div>
<div class="item"><span class="text">item 1</span></div>
<div class="item"><span class="text">item 2</span></div>
<div class="item"><span class="text">item 3</span></div>
<div class="item-span" style="color:#bf1717;">Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz</div>
</div>
min-content
Значение min-content
принимает длину содержимого и равномерно распределяет это пространство по дорожкам min-content
. В этом примере три столбца имеют одинаковую ширину. Вместе они потребляют всю ширину контента.
grid-template-columns: min-content min-content min-content
.grid {
width: 500px;
display: grid;
grid-template-columns: min-content min-content min-content;
border: 1px solid black;
background-color: black;
grid-gap: 1px;
}
.item-span {
/* display: none; */ /* toggle this */
background-color: white;
color: #3a843a;
grid-column: 1 / -1;
}
.text {
padding: 5px;
white-space: nowrap;
}
.item {
background-color: white;
}
<div class="grid">
<div class="item"><span class="text">item 1</span></div>
<div class="item"><span class="text">item 2</span></div>
<div class="item"><span class="text">item 3</span></div>
<div class="item"><span class="text">item 4</span></div>
<div class="item"><span class="text">item 5</span></div>
<div class="item"><span class="text">item 6</span></div>
<div class="item"><span class="text">item 1</span></div>
<div class="item"><span class="text">item 2</span></div>
<div class="item"><span class="text">item 3</span></div>
<div class="item-span" style="color:#bf1717;">Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz</div>
</div>
auto
и min-content
Когда вы смешиваете эти значения вместе (как в вашем коде), вы получаете, казалось бы, произвольную комбинацию длин. Однако в них нет ничего произвольного. Расчеты основаны на сеточных алгоритмах. (См. Разделы 7.2 , 11.3 и 11.8 в спецификации сетки.)
grid-template-columns: min-content min-content auto
.grid {
width: 500px;
display: grid;
grid-template-columns: min-content min-content auto;
border: 1px solid black;
background-color: black;
grid-gap: 1px;
}
.item-span {
/* display: none; */ /* toggle this */
background-color: white;
color: #3a843a;
grid-column: 1 / -1;
}
.text {
padding: 5px;
white-space: nowrap;
}
.item {
background-color: white;
}
<div class="grid">
<div class="item"><span class="text">item 1</span></div>
<div class="item"><span class="text">item 2</span></div>
<div class="item"><span class="text">item 3</span></div>
<div class="item"><span class="text">item 4</span></div>
<div class="item"><span class="text">item 5</span></div>
<div class="item"><span class="text">item 6</span></div>
<div class="item"><span class="text">item 1</span></div>
<div class="item"><span class="text">item 2</span></div>
<div class="item"><span class="text">item 3</span></div>
<div class="item-span" style="color:#bf1717;">Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz</div>
</div>
1fr
решение
Если ваша цель min-content
для столбцов 1 и 2, вам не нужно auto
для столбца 3. На самом деле, вам даже не нужно min-content
вообще.
Установите для столбца 3 значение 1fr
, которое затем будет занимать все свободное место в строке, вытесняя все дополнительное пространство из столбцов 1 и 2.
Это будет делать:
grid-template-columns: min-content min-content 1fr;
и так будет:
grid-template-columns: auto auto 1fr;
.grid {
width: 500px;
display: grid;
grid-template-columns: auto auto 1fr;
border: 1px solid black;
background-color: black;
grid-gap: 1px;
}
.item-span {
/* display: none; */ /* toggle this */
background-color: white;
color: #3a843a;
grid-column: 1 / -1;
}
.text {
padding: 5px;
white-space: nowrap;
}
.item {
background-color: white;
}
<div class="grid">
<div class="item"><span class="text">item 1</span></div>
<div class="item"><span class="text">item 2</span></div>
<div class="item"><span class="text">item 3</span></div>
<div class="item"><span class="text">item 4</span></div>
<div class="item"><span class="text">item 5</span></div>
<div class="item"><span class="text">item 6</span></div>
<div class="item"><span class="text">item 1</span></div>
<div class="item"><span class="text">item 2</span></div>
<div class="item"><span class="text">item 3</span></div>
<div class="item-span" style="color:#bf1717;">Rindfleischetikettierungsüberwachungsaufgabenübertragungsgesetz</div>
</div>