CSS Grid Minmax Fit-content
Минимальный и максимальный размер. Функция minmax()
Найти золотую середину помогает minmax()
. Эта функция имеет два параметра: минимальный размер min
и максимальный max
. Трек или элемент с таким размером растягивается и сжимается в пределах этих значений.
.container {
display: grid;
grid-template-columns: 1fr 1fr minmax(300px, 1fr);
/* третий столбец не может быть меньше 300px и больше одной фракции */
}
Контейнер растянется на всё свободное пространство, но не ужмётся меньше 300px
.
Значения параметров min
и max
можно задавать в пикселях, процентах, фракциях. Но есть два специфических значения — max-content
и min-content
. Их можно использовать самостоятельно или в рамках функции minmax()
.
начение max-content
Значение max-content
сообщает строке или столбцу: «Будь такой ширины, чтобы вмещать содержимое без переносов и максимально компактно, без свободного пространства по краям». Это удобно для подписей к картинкам. Значение max-content
размещает подпись на одной строке без переносов.
.container {
display: grid;
grid-template-rows: 1fr 1fr;
grid-template-columns: 1fr 1fr max-content;
}
Но оставлять контент без переносов рискованно. Если мы зададим значение max-content
столбцу со всеми обещаниями «начать с понедельника», представьте, какой ширины получится этот столбец!
Значение min-content
Для длинных списков подходит свойство min-content
. Оно стремится перенести всё, что переносится, чтобы содержимое ячейки занимало как можно меньше места. Значение min-content
сообщает треку: «Ориентируйся на самый маленький — картинку или слово.
.container {
display: grid;
grid-template-rows: 1fr 1fr;
grid-template-columns: 1fr 1fr min-content;
}
Функция minmax()
с параметрами min-content
и max-content
Трек со значением minmax(min-content, max-content)
будет ориентироваться на контент: не ужмётся меньше содержимого, но и не займёт лишнее место, когда контента мало.
.container {
display: grid;
grid-template-columns: 1fr 1fr minmax(min-content, max-content);
}
Ограничение по размеру. Функция fit-content()
Трек с fit-content
ориентируется на контент, но всегда стремится к указанному в нём значению. Колонка занимает ширину под размер своего контента. Но она не сможет превзойти значение, указанное в fit-content
.
.container {
display: grid;
grid-template-rows: 1fr 1fr 1fr;
grid-template-columns: 1fr 1fr fit-content(200px);
}
Ограничивать размер трека удобнее всего одной из двух функций: minmax()
и fit-content()
.
Функция minmax()
работает особенно хорошо со свойствами min-content
и max-content
. Трек со значением minmax(min-content, max-content)
не ужмётся меньше своего контента, но и не займёт больше места, чем контенту необходимо.
Функция fit-content()
задаёт только верхнюю границу размера трека. Трек со значением fit-content(200px)
ужмётся под размер своего контента, но не сможет растянуться больше 200px
.
#css-grid