Grid начало
Лекция в HTMLAcademy про Grid
Бокс - контейнер, который относится к типу grid, содержит дочерние элементы, называемые грид-элементами. Несмотря на то что грид-контейнер выглядит как обычный блочный элемент для других элементов, таких как основное содержимое, грид-элементы внутри него ведут себя по-другому.
Например, даже строчные элементы начинают занимать всю доступную им область, а внешние отступы у элементов в грид-контейнере также ведут себя иначе.
По умолчанию грид-контейнер является одноколоночным. Чтобы изменить это, необходимо описать шаблон грид-контейнера. Для этого используется свойство grid-template-columns.
.grid-container {
display: grid;
grid-template-columns: 100px 150px 80px;
}
Кроме 'grid-template-columns', для описания шаблона грид-контейнера можно использовать другие свойства, такие как 'grid-template-rows' и 'grid-template-areas'.
Если количество элементов в грид-контейнере превышает количество колонок, дополнительные элементы автоматически переносятся на новую строку (ряд) и также распределяются по колонкам.
Доли в гридах 'fr'
Единица измерения fr (сокращение от "fraction" — "доля") представляет собой долю доступного пространства в грид-контейнере.
.grid-container {
display: grid;
grid-template-columns: 1fr 2fr;
}
В данном примере грид-контейнер будет разделен на три равные части. Первая колонка займет одну часть ширины грид-контейнера, а вторая колонка — две части. Независимо от изменения ширины контейнера, пропорции колонок всегда останутся неизменными.
Единица fr может использоваться в сочетании с пикселями. Например, можно создать сетку, где правая колонка имеет фиксированную ширину 200 пикселей, а левая занимает все оставшееся пространство:
.grid-container {
display: grid;
grid-template-columns: 1fr 200px;
}
Свойство gap
Свойство 'gap' определяет расстояние между грид-элементами, но не влияет на расстояние между элементами и границами контейнера. Вот сравнение:
Свойство 'gap' применяется к грид-контейнеру, в то время как 'margin' — к элементам внутри него.
С помощью gap можно задавать отступы отдельно по вертикали и горизонтали: 'column-gap' определяет расстояние между колонками, а 'row-gap' — между рядами.
.grid-container {
column-gap: 15px;
row-gap: 5px;
}
Если отступы одинаковы, можно использовать составное свойство 'gap' для удобства:
.grid-container {
gap: 20px;
}