Спецификация Поддержка браузерами
Grid - это двухмерная система компоновки сайта на основе сетки колонка/column - ряд/-row.
.container { display: grid; }
.container {
grid-template-columns: ...;
grid-template-rows: ... ; }
.item {
grid-column: ...;
grid-row: ...; }
контейнер
container
блок со свойством
display: grid;
элемент item - прямой потомок контейнера.
<div class="container">
<div class="item"></div>
<div class="item"></div>
</div>
CSS свойства grid относятся либо к container, либо к item.
line разделяющая линия
track пространство
между смежными линиями
gap промежуток
между колонками и стобцами
cell наименьшая неделимая
единица контейнера
area пространство, вмещаюещее
одну ячейку и более
.container{ width: (if inline-grid => content, if grid => width of parent) }
указывают количество tracks, задавая
Далее рассматриваем только Grid-template-columns,
т.к. Grid-template-rows использует те же правила.
/* задаем 3 колонки */
200px 200px 200px
1fr 1fr 1fr
repeat(3, 1fr)
[line1] 200px [line2] 200px [line3] 200px [line4]
Ссылки: Line-based placement named grid lines
/* автозаполнение */
repeat(auto-fill, 200px)
repeat(auto-fill, minmax(200px, 33%))
repeat(auto-fill, minmax(200px, 1fr))
fit-content(30%) fit-content(40%) fit-content(30%)
/* для неявно заданного track,
например для текста без обертки в container */
min-content;
||
max-content;
100px
||
10%
||
10rem
0.8fr
minmax ()
fit-content()
start || end || center || stretch
Расположение контента: пример
start || end || center || stretch
Расположение контента: пример
start || end || center || stretch auto || normal || flex-start || flex-end || self-start || self-end || left || right || baseline || first baseline || last baseline
start || end || center || stretch || space-around || space-between || space-evenly
Расположение контента: пример
Если размеры ячеек заданы абсолютными, а не относительными единицами, то может появиться свободное пространство. Управление положением ячеек в пределах контейнера определяют свойства justify-content и align-content
start || end || center || stretch || space-around || space-between || space-evenly
Расположение контента: пример
Если размеры ячеек заданы абсолютными, а не относительными единицами, то может появиться свободное пространство. Управление положением ячеек в пределах контейнера определяют свойства justify-content и align-content
start || end || center || stretch flex-start || flex-end || left || right || space-between || space-around || space-evenly || baseline || first baseline || last baseline
в качестве значений могут быть
сокращенная запись (через / )
start / end
start / end
Пример:
grid-column: 1 / span 2;
grid-row: 1 / span 3;
Conainer - grid-template-areas:
Items - grid-areas:
Пример:
.container {
grid-template-areas: "header header header header"
"nav main main aside"
"footer footer footer footer"; }
.item-header { grid-area: header; }
.item-nav { grid-area: nav; }
.item-main { grid-area: main; }
.item-aside { grid-area: aside; }
.item-footer { grid-area: footer; }