При Интернет-серфинге иногда можно заметить, что на сайте информация располагается аккуратно и адаптируется под параметры задействованного устройства. Такой результат достигается за счет так называемой верстки. Ее необходимо грамотно реализовывать при помощи CSS и HTML.

С помощью верстки можно нарисовать таблицу или разместить информацию по табличному типу. Для данной затеи используется CSS grid. Предстоит выяснить, что собой представляет соответствующий язык разметки, как он создается и какие параметры предусматривает. Предложенная информация пригодится всем верстальщикам и веб-разработчикам.

Определение

Grid (сетка) – это тип разметки, в котором компоненты на веб-сайте или сервисе будут располагаться в виде таблицы. Технология раскладки элементов на странице. Grid способен работать с двумя измерениями одновременно – горизонталью и вертикалью.

Основное преимущество грида заключается в том, что он является очень гибким – допустимо объединение отдельных ячеек, изменение размера строк и столбцов, регулировка отступов между ними. Grid – это компонент, который хорошо приспосабливается к различным размерам экрана. За счет данной особенности соответствующий элемент становится максимально адаптивным.

По своей структуре grid напоминает Excel-документ: здесь поддерживаются горизонтальные и вертикальные линии, которые совместно образуют множество ячеек. Отличается рассматриваемый элемент верстки от Excel-файла тем, что внутри ячеек располагаются не выгрузки по зарплате за месяц или иные похожие данные, а составляющие веб-сайта:

  • картинки;
  • любой текст;
  • кнопки;
  • блоки HTML-кода;
  • иные компоненты.

Далее предстоит познакомиться с основными составляющими грида, а также научиться работать с ними.

Ключевые термины и определения

Чтобы лучше понимать, как работать с грид, необходимо сначала запомнить следующие определения:

  1. Грид-контейнер. Такое название получил родительский элемент. К нему в процессе верстки будет применяться свойство display: grid. Он является основным элементов всей разметки. Хранит в себе все содержимое имеющейся сетки.
  2. Грид-элемент – дочерний элемент. Является прямым потомком грид-контейнера. Подчиняется принципам и правилам раскладки гридов. Это какой-либо элемент на веб-странице.
  3. Grid-линия – линия-разделитель. С ее помощью удается сформировать структуру рассматриваемого элемента верстки. Она может быть как вертикальной (линией колонки), так и горизонтальной (линия ряда). Располагается по обе стороны от колонки или ряда соответственно. Применяется для привязки grid-элементов.
  4. Grid-ячейка – пространство между соседними грид-линиями. Это простейшая единица сетки. В ней можно разместить один или несколько блоков программного кода.
  5. Grid-полоса – пространство между двумя соседними грид-линиями.
  6. Grid-область – область, которая ограничена 4 грид-линиями. Может включать в себя любое их количество как по горизонтали, так и по вертикали. Называется пространством ячеек. В CSS допускается объединение нескольких ячеек в одну для дальнейшей работы с ними в качестве единого целого.

Grid напоминает Flexbox, но имеет одно существенное отличие. С помощью рассматриваемого «инструмента» верстки допустимо создание двумерных таблиц. Это значит, что в них возможно формирование одновременно и рядов, и колонок. В случае с Flexbox ситуация обстоит иначе. Здесь допустимо встраивать элементы или в столбик, или в единую линию. Сочетание расположения не предусматривается.

Свойства грид-контейнеров

Изучая grid-сетку, необходимо обратить внимание на свойства грид-контейнеров. Эта информация пригодится для большего понимания примеров изучаемого элемента. При помощи свойств grid-контейнера можно задать параметры будущей таблицы:

  • строки;
  • столбцы;
  • размеры строк и столбцов;
  • расположение ячеек;
  • иные характеристики сетки.

Ниже приведены основные свойства, с которыми предстоит работать в процессе верстки веб-сайта или онлайн-сервиса. С ними должен быть знаком каждый, кто изучает CSS.

Display

Первое свойство – display. Если элемент получил соответствующий параметр со значением grid, значит этот компонент становится грид-контейнером. Его дочерние элементы начинают подчиняться принципам и правилам grid-раскладки. Снаружи grid-контейнер ведет себя как блок.

CSS grid: основы работы

Сюда же можно отнести еще одно значение, позволяющее создать на странице сетку – inline-grid. Этот компонент ведет себя аналогичным образом, но снаружи он рассматривается в качестве строчного компонента.

Колонки (grid-template-columns)

Grid-template-columns – свойство, с помощью которого можно создать колонки. Достаточно записать их размеры, разделяя информацию пробелами. Размеры допустимо указывать в разнообразных единицах измерения:

  • пикселях;
  • сантиметрах;
  • процентах;
  • иных единицах.

CSS допускает смешивание нескольких единиц в пределах одного и того же свойства. Для лучшего понимания рассмотренных далее параметров предстоит изучать наглядные примеры формирования CSS grid.

Первый пример – требуется создать три колонки. Первая будет размещаться на 1/3 экрана, вторая – ровно на 100 пикселей, а третья – на все оставшееся пространство. Наиболее простой вариант – это запись размеров при помощи процентов. Выглядит это в программном коде так:

CSS grid: основы работы
CSS grid: основы работы

Если воспользоваться предложенным примером кода, общая ширина всех колонок окажется более 100 %. На экране соответствующие компоненты будут выглядеть как на шаблоне, представленном выше. Третья колонка уедет за пределы имеющегося контейнера.

Чтобы избавиться от подобных проблем grid-сетка получила новую единицу измерения – фракцию (fr). С ее помощью получается делить все свободное экранное пространство на несколько частей. Верстальщику не придется все время думать над тем, чтобы вручную подгонять проценты.

В ранее предложенном примере при помощи фракции можно с легкостью добиться желаемого результата – достаточно первому столбцу отвести одну часть свободного пространства, третьему – 2, а второму – 100px. Выглядит это в программном коде так:

CSS grid: основы работы

Теперь ячейки будут располагаться согласно задумке. Ни одна из них не будет «уезжать» за пределы контейнера.

Ряды

Grid-template-rows – свойство, с помощью которого удается задать ряды в контейнере. Принцип формирования тут точно такой же, как и в случае с ячейками. Для указания размер строк необходимо также пользоваться фракциями.

Вот пример реализации рассматриваемого свойства:

CSS grid: основы работы

Можно заметить, что в предложенном примере размеры двух строк повторяются. Они занимают 2fr. Для экономии пространства в программном коде принято использовать функцию repeat. Она принимает на вход два параметра:

  • размеры строки во фракциях;
  • количество повторений.

В программном коде это будет выглядеть так:

grid-template-rows: 3fr repeat(2, 2fr) 1fr;.

Обе формы записи (полная и сокращенная) допускаются для использования. Их можно чередовать в зависимости от имеющегося контекста. В предложенном примере без функции repeat удалось бы обойтись. Если же требуется создать крупную таблицу, лучше пользоваться сокращенной формой записи. Она делает исходный код более читаемым и лаконичным.

Области

Grid-template-areas – это одна из особенностей грид-разметки. Рассматриваемый компонент верстки допускает создание областей с гибким регулированием их размеров.

Для формирования области нужно для каждого элемента в CSS-файле задать свойство grid-area. В качестве его параметра разрешено выбирать любое угодное разработчику/верстальщику имя. Вот  фрагмент, позволяющий создавать области. Он может быть добавлен в любое место CSS-файла:

CSS grid: основы работы

В grid-контейнере предстоит сформировать «матрицу» из соответствующих имен:

CSS grid: основы работы

На экране соответствующий программный код будет выглядеть так:

CSS grid: основы работы

Каждое имя в grid-template-areas будет соответствовать определенному объекту. Одинаковые имена, стоящие рядом друг с другом, формируют несколько ячеек в единое целое. А именно – в грид-область. В приведенном примере ситуация окажется следующей:

  • компонент A с «псевдонимом» f занимает 25 ячеек;
  • B (i) – 9 ячеек;
  • C (b) – 4 ячейки;
  • D (o) – 1 ячейка;
  • E (n) – 1 ячейка.

При верстке Grid-сетки можно также пользоваться сокращенным свойством. Это полезная запись, которая сделает исходный код более читаемым и удобным.

Сокращенное свойство

Grid-template – это так называемое сокращенное свойство. Оно дает возможность задать в краткой форме столбцы со строками или полноценные области. Вот пример короткой записи для создания грид-строк и грид-колонок:

CSS grid: основы работы

Здесь при помощи всего одной строки удается задать полноценную таблицу – достаточно записать через слеш (/) количество рядов, а также столбцов. Вот пример сетки из трех строк по 1fr и двух столбцов 2fr:

CSS grid: основы работы

Параметр grid-template может принимать функцию repeat. Здесь она используется точно также, как и в ранее рассмотренных примерах.

А вот сокращенная запись для грид-областей. Чтобы воспользоваться такой формой реализации необходимо объявить свойство grid-area для каждого имеющегося объекта:

CSS grid: основы работы

Выше – наглядный пример реализации сокращенной формы записи grid-area. Теперь можно изучить свойства грид-элементов.

Свойства грид-элементов

Создавая grid сетку, необходимо помнить о параметрах ее элементов. С их помощью удается прямо указать браузеру на расположение тех или иных компонентов. Для реализации поставленной задачи обычно требуется задать две точки:

  • с какой линии элемент начинается;
  • на какой линии компонент должен закончиться.

Соответствующий принцип распространяется как на горизонталь, так и на вертикаль таблицы. Вот таблица, которая поможет разобраться с движением элемента на странице по горизонтали:

grid-column-start: 1;Команда, которая задает начальную позицию (линию) столбцов.
grid-column-end: 4;Указание на конечную позицию столбцов.
grid-column: grid-column-start/grid-column-end;Объединенная форма записи рассматриваемого свойства. Помогает задать начало и конец столбцов одновременно.

А вот движение элемента на странице по вертикали:

grid-row-start: 1;Начальная позиция строк.
grid-row-end: 3;Конечная позиция строк.
grid-row: grid-row-start/grid-row-end;Объединенная форма записи. С ее помощью можно одновременно задать начало и конец для строк.

У компонентов сайта имеется одно общее свойство. Оно объединяет все 4 основных параметра. Выглядит соответствующее свойство так:

grid-area: grid-row-start/grid-column-start/grid-row-end/grid-column-end;

Вот пример создания grid сетки при помощи изучаемых свойств. В предложенном коде параметры присваиваются первым трем элементам:

CSS grid: основы работы

Здесь исходный код указывает буквам на место, которое им необходимо занять в сетке:

  1. A занимает пространство от 1 до 4 линии – и по горизонтали, и по вертикали.
  2. B располагается от 4 до 6 линии по горизонтали. По вертикали он растянулся от 1 до 3 линии.
  3. C – от 4 до 5 линии по горизонтали, а также от 3 до 4 линии по вертикали.

Оставшиеся элементы располагаются в grid по дефолту.

CSS grid: основы работы

Выше можно увидеть наглядный пример того, как рассматриваемый пример кода будет выглядеть на экране.

Отступы

Grid-gap – это отступы. С их помощью предлагается регулировать интервалы между элементами grid контейнера. Добиться желаемого результата получится при помощи двух параметров:

  • column-gap – указывает на расстояние между имеющимися колонками в grid;
  • row-gap – используется для формирования расстояния между строчками grid.

А вот пример того, как соответствующие параметры будут выглядеть в исходном коде:

CSS grid: основы работы

Grid gap имеет сокращенную форму записи. В ней характеристики column-gap и row-gap записываются через пробел. Выглядит это в программном коде так:

gap: 2% 2%;

Всего ранее изученного мало для полноценной верстки сетки (таблицы) на веб-странице. Внимания требует также выравнивание grid контейнера.

Выравнивание grid

Грид сетка поддерживает множество полезных и простых в плане реализации свойств. Кроме параметров ее элементов каждый верстальщик должен познакомиться с принципами выравнивания компонентов в рамках grid контейнера или области.

Justify-items

Justify-items – параметр в grid, который позволяет выравнивать все элементы в пределах заданной области по горизонтали. Здесь можно использовать следующие команды и коды:

  • justify-items: stretch; – используется для растягивания компонентов grid во всю ширину ячейки;
  • justify-items: start; – позволяет расположить элементы в левой части ячейки или заданной области;
  • justify-items: center; – используется для расположения компонентов в центре grid-ячеек или имеющихся областей;
  • justify-items: end; – команда, с помощью которой элементы располагаются в правой части ячейки или области на экране.

Существуют также другие параметры grid сетки, отвечающие за выравнивание контейнера. Далее они будут тоже рассмотрены. Эта информация поможет быстрее освоить верстку и создание таблиц на веб-странице.

Align-items

Align-items – параметр, используемый для выравнивания элементов в пределах области по вертикали. Здесь предстоит пользоваться следующими записями:

  • align-items: stretch; – растягивание элементов на всю длину grid ячейки;
  • align-items: start; – расположение компонентов в верхней части grid ячейки;
  • align-items: center; – выравнивание по центру;
  • align-items: end; – расположение в нижней части ячейки.

Это не все команды, которые помогут выполнить выравнивание при верстке таблиц на сайте через CSS. Есть еще два параметра, позволяющих добиться желаемого результата.

Justify-content

Justify-content – параметр, который используется для выравнивания составляющих сайта в пределах одного контейнера по горизонтали. В этом случае предстоит пользоваться следующими записями:

  • justify-content: start; – размещение элементов в левой части контейнера;
  • justify-content: center; – размещение компонентов по центру grid контейнера;
  • justify-content: end; – расположение всех элементов в правой части контейнера;
  • justify-content: space-between – распределение компонентов по правому и левому краям;
  • justify-content: space-around; – распределение с равным пространством между элементами и половиной соответствующего пространства от краев;
  • justify-content: space-evenly; – размещение компонентов с равным пространством и между составляющими, и от краев.

Для выравнивания grid контейнеров необходимо запомнить еще одно свойство. Оно позволяет распределить все элементы в пределах грид по вертикали.

Align-content

Align-content – это свойство, с помощью которого можно выравнивать элементы в пределах всего контейнера по вертикали. Здесь помогут следующие программные коды:

  • align-content: start; – размещение всех компонентов в верхней части grid контейнера;
  • align-content: center; – выравнивание по центру;
  • align-content: space-between; – размещение по верхнему и нижнему краям так, чтобы первый компонент был ближе к началу, а последний – к концу;
  • align-content: space-around; – распределение с равным пространством между компонентами и половиной соответствующего пространства от краев.

Grid элементы тоже предусматривают выравнивание. Для этого используются отдельные команды и параметры.

Выравнивание grid компонентов

При создании CSS сетки необходимо помнить о свойствах, которые работают с отдельными грид-элементами. Далее предстоит работать с компонентом с именем A. Именно он будет выравниваться в таблице.

Первое свойство – это justify-self. Оно используется для выравнивания компонента по горизонтали:

  • justify-self: stretch; – A растянется по всей длине grid области;
  • justify-self: center; – A размещается по центру заданной области;
  • justify-self: start; – A будет расположен в самом начале grid области;
  • justify-self: end; – размещение A в конце заданной области.

Также предусматривается выравнивание грид-элементов по вертикали. Для этого используется align-self:

  • stretch – используется для растягивания A по всей ширине grid области;
  • center – размещение A по центру (в середине) grid области;
  • start – параметр, с помощью которого можно разместить A в начале grid пространства;
  • end – размещение в самом конце грид-области.

Всей изученной информации будет достаточно для создания полноценной CSS сетки (таблицы). Этот компонент может предусматривать вложенность.

Вложенность

Грид может быть вложенным. Это значит, что он будет включать в свой состав другой грид-контейнер. Чтобы лучше понять принцип работы соответствующего параметра предстоит воспользоваться следующим кодом:

CSS grid: основы работы

Для основного контейнера в CSS-файле предстоит создать таблицу 3 на 3:

CSS grid: основы работы

А вот получившийся результат:

CSS grid: основы работы

Далее для D-элемента предстоит определить display:grid. Внутри D объявляется еще одна HTML-сетка. Для строк и столбцов необходимо воспользоваться параметром subgrid. Он требуется для заимствования параметров родительского грида:

CSS grid: основы работы
CSS grid: основы работы

Теперь можно управлять компонентами E, F, G, задавая им различное расположение в пределах D (он тоже стал grid сеткой). Вот пример, благодаря которому E начинается от второй вертикальной линии до третьей:

CSS grid: основы работы
CSS grid: основы работы

Теперь понятно, как работать с гридами в CSS. Лучше освоить верстку и веб-разработку помогут специальные дистанционные компьютерные курсы. Они рассчитаны на срок от нескольких месяцев до года. По окончании курса каждый получит электронный сертификат, подтверждающий приобретенные знания и навыки.

Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!