# CSS Grid
# Определения
Grid Track
- расстояние между ближайшими двумя линиями, колонка или строкаGrid Line
- линия, создаваемая Grid Track. gap толщина линииGrid Cell
- ячейка сеткиGrid Area
- область всегда прямоугольная. объединение нескольких ячеек в однуLine-based placement
- позиционирование на основе линий
# Grid Container
div {
display: grid; /* объявление */
}
div {
grid-template-columns: 300px 300px; /* столбцы (3 штуки) */
grid-template-rows: 150px 150px; /* строки (3 штуки), можно не задавать. адаптируются под высоту контента */
grid-template: 150px 150px / 300px 300px; /* короткая запись строки / столбцы */
grid-auto-columns: 200px; /* размер по умолчанию для неявно заданных столбцов */
grid-auto-rows: 200px; /* размер по умолчанию для неявно заданных строк */
}
div {
gap: 20px; /* расстояние между строками и стобцами (толщина линии) */
column-gap: 20px; /* расстояние между столбцами */
row-gap: 20px; /* расстояние между строками */
}
# Для grid-template-columns
и grid-template-rows
300px 300px 300px
- 3 элемента (фиксированные величины)1fr 1fr 1fr
- 3 элемента (относительные величины) fr - фракция500px 1fr 2fr
- 3 элемента (смешанные величины)500px auto 500px
- 3 элемента (auto - занимает ширину контента)repeat(3, 1fr)
- задать повторяющийся паттернminmax(150px, 250px) 1fr 1fr
- 3 элемента, первый с minmaxminmax(100px, auto)
- определяется автоматически по ширине элементов
# Grid Element
# Grid Area
.cards {
display: grid;
gap: 20px;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: 200px 200px;
grid-template-areas: "header header menu"
"content content .";
}
.header { grid-area: header; }
.menu { grid-area: menu; }
.content { grid-area: content; }