Конспект «Микросетки. Начало». Раздел 2
Список на флексах
Свойство justify-content
со значением space-between
заставляет первый и последний элемент прижиматься к границам контейнера. Но если в ряду всего два элемента, то свободного пространства между ними может оказаться слишком много. В этом случае лучше использовать margin
.
Чтобы убрать лишний отступ у последнего элемента в ряду, используют псевдокласс :nth-child
. Он позволяет выбрать дочерний элемент по его порядковому номеру:
// Выберет второй элемент с классом item
.item:nth-child(2) { ... }
// Выберет каждый второй элемент с классом item
.item:nth-child(2n) { ... }
Если не известно, какой элемент окажется в ряду последним, этот способ не сработает.
repeat
Если все колонки в грид-контейнере должны быть одинаковой ширины, то удобно использовать значение-функцию repeat
. В скобках после repeat
указывают количество колонок и их ширину. Значения разделяют запятой:
grid-template-columns: repeat(количество колонок, ширина колонки);
auto-fit
Если количество колонок зависит от ширины контейнера, используют специальное значение auto-fit
. Его указывают в скобках после repeat
вместо числа колонок:
grid-template-columns: repeat(auto-fit, ширина колонки);
minmax
Чтобы ширина колонок изменялась пропорционально свободному пространству в контейнере, используют значение-функцию minmax
.
Его указывают в repeat
вместо фиксированной ширины колонок. В скобках после minmax
задают минимальный и максимальный размеры колонок, они разделяются запятой:
repeat(auto-fit, minmax(минимальный размер, максимальный размер));
В minmax
в качестве максимального значения часто используют единицу измерения fr
. Она позволяет колонкам увеличивать ширину до тех пор, пока свободного пространства в контейнере не хватит на ещё одну колонку.
Свойства grid-column и grid-row
Чтобы растянуть элемент на несколько колонок используют свойство grid-column
. Число после ключевого слова span
указывает число колонок, которые элемент должен занять:
.element {
grid-column: span 2;
}
Растянуть элемент на несколько рядов можно с помощью свойства grid-row
. Ключевое слово span
в нём означает количество рядов, которые элемент должен занять:
.long-element {
grid-row: span 2;
}
Свойства grid-column
и grid-row
можно использовать одновременно.
Свойство grid-auto-flow
Свойство grid-auto-flow
управляет автозаполнением грид-контейнера.
.grid-container {
display: grid;
grid-auto-flow: row;
}
Значение по умолчанию row
говорит располагать элементы в том порядке, в котором они идут в разметке, и при необходимости создавать новые ряды:
Но если указать значение dense
, то контейнер будет заполняться так, чтобы не было пропусков:
Значение dense
заставляет грид-контейнер заполнять пустые ячейки первым подходящим по размеру грид-элементом. При этом визуальный порядок на странице может отличаться от порядка элементов в разметке. Если порядок элементов важен, лучше это значение не использовать.