Файл: Практическая работа 8 css grid Layout 17 Grid Layout.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 08.11.2023
Просмотров: 451
Скачиваний: 14
СОДЕРЖАНИЕ
17.2.2 Свойства grid-template-columns и grid-template-rows
17.2.3 Свойства grid-auto-columns и grid-auto-rows
17.2.4 Свойство grid-auto-flow
17.2.5 Свойство grid-template-areas
17.2.7 Свойства column-gap и row-gap
17.3.1 Свойства grid-column-start, grid-column-end, grid-row-start, grid-row-end
17.3.2 Свойства grid-column и grid-row
17 Grid Layout
CSS Grid Layout или просто гриды — это удобная технология для раскладки элементов на веб-страницах. В отличие от флексбоксов, одновременно работающих только с одним измерением, гриды дают возможность работать одновременно с двумя: горизонталью (строками) и вертикалью (колонками). Flexbox это одномерные макеты, а Grid это двумерные. В концепциях CSS Grid на первом месте стоит сам макет, а во Flexbox акцент делается на содержимом.Flexbox-макет отлично подходит для компонентов приложения и маломасштабных макетов. Grid-макет подходит для более масштабных макетов с нелинейным дизайном.Принцип работы гридов чем-то похож на таблицы. Вместо работы только с рядами или только с колонками с помощью гридов можно работать с так называемыми грид-ячейками, позиционируя элементы по вертикали и горизонтали одновременно.Ниже будут описаны основные используемые свойства гридов; если потребуется информация, которой не будет представлено, вы можете обратиться к спецификации:Спецификация CSS Grid Layout – URL: https://www.w3.org/TR/css-grid-1/.17.1 Основные понятия Grid
-
Grid-контейнер - родительский элемент, к которому применяется свойство display: grid. -
Grid-элемент - дочерний элемент, прямой потомок grid-контейнера. Подчиняется правилам раскладки гридов. -
Grid-линия - разделительная линия, формирующая структуру грида (рисунок 17.1). Может быть как вертикальной (grid-линия колонки), так и горизонтальной (grid-линия ряда). Располагается по обе стороны от колонки или ряда. Используется для привязки grid-элементов.
-
Grid-ячейка - пространство между соседними grid-линиями (рисунок 17.2). Единица grid-сетки.
-
Grid-полоса - пространство между двумя соседними grid-линиями (рисунок 17.3).
Рисунок 17.3 - Горизонтальная grid-полоса между первой и второй grid-линиями ряда
-
Grid-область - область, ограниченная четырьмя grid-линиями (рисунок 17.4). Может состоять из любого количества ячеек как по вертикали, так и по горизонтали.
17.2 Свойства grid-контейнера
17.2.1 Свойство display
Если элементу задано свойство display со значением grid, то такой элемент становится грид-контейнером (листинг 17.2.1). Дочерние элементы этого контейнера начинают подчиняться правилам грид-раскладки. Снаружи грид-контейнер ведёт себя как блок.Листинг 17.2.1 – Значение gridЗначение inline-grid практически аналогично предыдущему - за тем исключением, что в этом случае грид-контейнер снаружи будет вести себя как строчный элемент (листинг 17.2.2).Листинг 17.2.2 - Значение inline-grid17.2.2 Свойства grid-template-columns и grid-template-rows
Свойства, задающие размеры и количество колонок или рядов грид-раскладки (листинг 17.2.3 и рисунок 17.2.1).Листинг 17.2.3 - Свойства grid-template-columns и grid-template-rowsРисунок 17.2.1 - Свойства grid-template-columns и grid-template-rowsВы можете также явно именовать грид-линии, используя для этого квадратные скобки (листинг 17.2.4). Каждая линия также может иметь больше одного имени – они пишутся через пробел. Листинг 17.2.4 – Именование grid-линийЕсли нужны одинаковые колонки или ряды, то можно воспользоваться функцией repeat(). Пример ниже создает 3 колонки по 250 пикселей (листинг 17.2.5):Листинг 17.2.5 – Именование grid-линийС появлением гридов появилась новая единица измерения: fr.fr (от fraction — доля, часть) отвечает за свободное пространство внутри грид-контейнера. Например, код ниже создаст три колонки, каждая из которых будет занимать 1/3 ширины родителя (листинг 17.2.6):
Листинг 17.2.6 – Использование долей (fr) – сокращенное написание
Верхняя запись кода аналогична нижепредставленной (листинг 17.2.7):
Листинг 17.2.7 – Использование долей (fr) – полное написание
Свободное пространство рассчитывается после того, как место отдано всем фиксированным размерам. К примеру, в коде ниже сначала будет создана колонка шириной 250 пикселей, а затем свободное пространство — ширина родителя минус 250 пикселей — будет поделено между остальными колонками. Каждая будет занимать ширину (100% - 250px) / 2 (листинг 17.2.8):
Листинг 17.2.8 – Распределение свободного пространства
17.2.3 Свойства grid-auto-columns и grid-auto-rows
Если элементов внутри грид-контейнера больше, чем может поместиться в заданные явно ряды и колонки, то для них создаются автоматические, неявные ряды и колонки. При помощи свойств grid-auto-columns и grid-auto-rows можно управлять размерами этих автоматических рядов и колонок (листинг 17.2.9 и рисунок 17.2.2).Листинг 17.2.9 – Свойство grid-auto-rowsРисунок 17.2.2 – Свойство grid-auto-rowsВ этом примере создаются два явных ряда размером 50 и 150 пикселей, соответственно. Элементы, начиная с третьего, в эти два ряда не помещаются, и для них создаются автоматические ряды. При помощи свойства grid-auto-rows мы указываем, что автоматические ряды должны иметь размер 15 пикселей.Можно задавать больше одного значения для автоматических колонок или рядов. Тогда паттерн размера будет повторяться до тех пор, пока не кончатся грид-элементы.17.2.4 Свойство grid-auto-flow
Если грид-элементов больше, чем явно объявленных колонок или рядов, то они автоматически размещаются внутри родителя. А вот каким образом - в ряд или в колонку - можно указать при помощи свойства grid-auto-flow. По умолчанию значение у этого свойстваrow, лишние элементы будут выстраиваться в ряды в рамках явно заданных колонок.Возможные значения:
-
row (значение по умолчанию) - автоматически размещаемые элементы выстраиваются в ряды. -
column - автоматически размещаемые элементы выстраиваются в колонки. -
dense - браузер старается заполнить пустые ячейки в разметке, если размеры элементов позволяют. Можно сочетать с остальными значениями.
17.2.5 Свойство grid-template-areas
Свойство grid-template-areas позволяет задать шаблон сетки расположения элементов внутри грид-контейнера. Имена областей задаются при помощи свойства grid-area. Текущее свойство grid-template-areas просто указывает, где должны располагаться эти грид-области.Возможные значения:-
none (значение по умолчанию) - области сетки не задано имя. -
. - означает пустую ячейку. -
название - название области - может быть абсолютно любым словом или даже эмодзи.
Имена областей должны разделяться пробелами. Это важно, особенно в том случае, если вы хотите расположить две пустых ячейки рядом. Разделите точки пробелами, иначе браузер подумает, что это одна пустая ячейка.Листинг 17.2.12 – Свойство grid-template-areas Рисунок 17.2.5 - Свойство grid-template-areas
17.2.6 Свойство grid-template
Собирающее свойство (свойство-шорткат) для свойств grid-template-rows, grid-template-columns. Позволяет записать все значения в одну строку. Можно прописать все колонки и ряды сразу, разделяя их слэшем /. Сперва идут ряды, а затем колонки (листинг 17.2.13).Листинг 17.2.13 – Свойство grid-template17.2.7 Свойства column-gap и row-gap
Свойства column-gap и row-gap задают отступы между колонками или рядами (листинг 17.2.14 и рисунок 17.2.6).Листинг 17.2.14 – Свойства column-gap и row-gapРисунок 17.2.5 - Свойства column-gap и row-gap17.2.8 Свойство gap
Свойство-шорткат для записи значений свойств row-gap и column-gap. Значения разделяются пробелом (листинг 17.2.15):Листинг 17.2.15 – Свойство gap17.2.9 Свойство justify-items
Свойство justify-items задает выравнивание грид-элементов по горизонтальной оси. Применяется ко всем элементам внутри грид-родителя.Возможные значения:-
start - выравнивает элемент по начальной линии (листинг 17.2.16 и рисунок 17.2.6).
-
end - выравнивает элемент по конечной линии (листинг 17.2.17 и рисунок 17.2.7).