layout css что это
CSS Grid Layout. Быстрый старт
Вступление
Я использую Flexible Box Layout
Многие задаются вопросом: «Стоп, я использую flexbox, зачем мне еще какие-то grid’ы?». Вопрос более чем уместен. CSS Grid не заменит Flexbox и наоборот. Первое отличие — это то, что Flexbox работает только в одном измерении. Из этого следует, что мы можем размещать flex элементы только вдоль главной оси или вдоль поперечной оси. Мы не можем разместить flex элементы сразу на нескольких осях. CSS Grid в свою очередь нам позволяет работать с разметкой в двухмерном пространстве и выравнивать содержимое в обоих измерениях. Мне нравится как объясняет эту разницу Tab Atkins.
Одна из самых больших проблем при разработке пользовательских интерфейсов — это то, что при изменении дизайна, функционала или поведения любого блока приходится менять его разметку (в большинстве случаев). CSS Grid позволяет менять расположение grid элементов не меняя сам HTML. Ниже пример простой разметки на Flexbox и CSS Grid.
Основные термины
Прежде чем приступать к работе с CSS Grid, нужно разобраться с основными терминами. На основе этих терминов построена вся спецификация.
Grid container — это набор пересекающихся горизонтальных и вертикальных grid линий, которые делят пространство grid контейнера на grid области, в которые могут быть помещены grid элементы. Внутри grid контейнера есть два набора grid линий: один определяет ось столбцов, другой определяет ось строк.
Grid lines — это горизонтальные и вертикальные разделители grid контейнера. Эти линии находятся по обе стороны от столбца или строки. Автор может задать для данного элемента имя или числовой индекс, которые может использовать дальше в стилях. Нумерация начинается с единицы. Важный нюанс, данный элемент восприимчив к режиму написания, который используется на вашем ресурсе. Например, вы используете Арабский язык или любой другой язык у которого режим написания справа налево, то нумерация линий будет начинаться с правой стороны.
Grid track — это пространство между двумя смежными grid линиями, вертикальными или горизонтальными.
Grid cell — это наименьшая неделимая единица grid контейнера на которую можно ссылаться при позиционировании grid элементов. Образуется на пересечении grid строки и grid колонки.
Grid area — это пространство внутри grid контейнера, в которое может быть помещен один или больше grid элементов. Этот элемент может состоять из одной или более grid ячеек.
Каждый элемент тесно связан друг с другом и отвечает за определенную часть grid контейнера.
Первый CSS Grid макет
Мы разобрались с основными терминами. Пришло время сделать наш первый grid макет. Ничего сложного, простенький макет три строки на три колонки, чтобы разобраться с основами. Ниже вы можете увидеть пример.
Для разметки колонок и строк используются следующие правила:
Сокращенная форма записи выглядит так:
Типичный шаблон на grid’ах
Давайте рассмотрим первый вариант grid-template-areas :
Полезные ссылки
Вместо заключения
В данной статье мы рассмотрели всего лишь верхушку CSS Grid Layout айсберга. Я начал обращать внимание на CSS Grid Layout еще когда все браузеры его поддерживали за флагами. Данный текст не способен передать мои впечатления от работы с этой спецификацией. Иногда сложно поверить своим глазам какие штуки удается сделать при помощи CSS Grid. Это разрыв всех шаблонов. И мне это нравится.
Я вам советую обратить внимание на данную спецификацию и потратить немного своего времени на ее изучение. Поверьте, в будущем вам это точно пригодится и не важно, пишете вы на React, Angular, Vue (вставьте свое). Grid’ы пришли надолго.
Напоследок добавлю пример с произвольным появлением grid элемента в разных именованных областях.
Введение в CSS вёрстку
Требования: | Базовые знания HTML (изучите введение в HTML), и понимание как работает CSS (изучите введение в CSS.) |
---|---|
Цель: | Предоставить вам обзор методов компоновки страниц CSS. Каждый метод может быть изучен более подробно в последующих статьях. |
Методы компоновки страниц CSS позволяют нам использовать элементы, расположенные на веб-странице, и контролировать где они находятся относительно их позиции по умолчанию, других элементов вокруг них, их родителей или главного окна. Методы компоновки страниц, которые мы подробно рассмотрим в этой статье.
Каждый метод имеет свои преимущества и недостатки и ни одна техника не предназначена для использования в изоляции от других. Разбирая данные методы, вы поймёте, какой из них лучший инструмент разметки для каждой задачи.
Normal flow
Нормальный поток (Normal flow) это то как ваш браузер отображает по умолчанию, когда вы не меняли расположение элементов на странице. Взглянем на пример:
По умолчанию ваш браузер выведет этот код следующим образом:
Заметьте, что HTML-элементы здесь отображаются точно в таком порядке, как и в исходном коде — первый параграф, за ним неупорядоченный список, затем второй параграф.
Элементы, выводящиеся один под другим, называются блочными, в противоположность строчным, которые выводятся один вслед за другим, как отдельные слова в обычном абзаце текста.
Примечание: Направление, в котором отображается содержимое блока, называется Block Direction. Block Direction вертикально в языках типа Английского, имеющих горизонтальное направление письма. В языках, типа Японского, имеющих вертикальное направление письма, Block Direction горизонтально. Соответствующее Inline Direction отвечает за направление отображения строковых элементов (таких как предложение).
Методы CSS, которыми вы можете управлять разметкой элементов:
Свойство display
Flexbox
Flexbox (сокращение от Flexible Box Layout) это модуль, разработанный для облегчения вёрстки в одном из измерений — как ряд или как колонка. Для использования, установите свойство display: flex для родительского элемента тех элементов, к которым хотите применить этот тип вёрстки; все его прямые потомки станут flex элементами. Рассмотрим это на простом примере.
В дополнение к свойствам, применяемым к контейнеру, существуют свойства, применяемые ко вложенным элементам. Эти свойства помимо всего прочего, могут менять размеры элемента, растягивая его и заставляя занимать всё доступное место.
Примечание: Это было очень краткое введение в то что возможно во Flexbox, чтобы узнать больше см. нашу статью Flexbox.
Grid Layout
В то время как flexbox предназначен для одномерной разметки, Grid Layout предназначен для двумерной — выстраивая предметы в ряды и столбцы.
Примечание: Эти два примера всего лишь малая часть мощности Grid layout; чтобы узнать больше см. нашу статью Grid Layout.
Остальная часть этого руководства освещает другие методы разметок, которые менее важны для основной структуры разметки вашей страницы, но всё равно могут помочь вам в достижении определённых задач. Понимая природу задачи каждой разметки, вы вскоре обнаружите, что, глядя на конкретный компонент вашего дизайна, часто будет ясно какой тип разметки подходит лучше всего.
Floats
Делая элемент плавающим (float) мы меняем поведение этого элемента и элементов блочного уровня, следующих за ним в нормальном потоке. Элемент перемещается влево или вправо и удаляется из нормального потока ( normal flow ), а окружающий контент обтекает плавающий элемент.
Свойство float имеет четыре возможных значения:
В примере ниже мы задаём элементу
Примечание: Float полностью объяснён в нашем уроке по свойствам float и clear. До таких методов как Flexbox и Grid Layout, float использовался как метод создания макетов колонок. Вы все ещё можете встретить эти методы в интернете; мы рассмотрим их в уроке по устаревшим методам разметки.
Методы позиционирования
Позиционирование позволяет вам перемещать элементы с места, где бы они располагались при нормальном потоке в другую локацию. Позиционирование не является методом создания основной разметки страницы, это больше об управлении и точной настройке положения определённых элементов на странице.
Существует пять типов позиционирования о которых вам следует знать:
Пример простого позиционирования
Для ознакомления с этими методами вёрстки, мы покажем вам пару быстрых примеров. Наши примеры будут иметь одинаковый HTML, который выглядит следующим образом:
Этот HTML по умолчанию будет стилизован, используя следующий CSS:
Результат выглядит следующим образом:
Relative positioning
Относительное (Relative) позиционирование позволяет вам смещать элемент относительно положения, которое он бы имел по умолчанию в нормальном потоке. Это значит, что вы можете выполнить такую задачу как перемещение иконки немного вниз, так чтобы он был на одной линии с текстовой меткой. Чтобы сделать это, мы можем добавить следующее правило для добавления относительного позиционирования.
Добавление этого кода даст следующий результат:
Absolute positioning
Абсолютное (Absolute) позиционирование используется чтобы полностью удалить элемент из нормального потока и разместить его, используя смещение от краёв содержащего блока.
Возвращаясь к нашему примеру без позиционирования, мы можем добавить следующее CSS-правило, чтобы реализовать абсолютное позиционирование:
Это совсем другое! Позиционированный элемент теперь совершенно отделен от разметки остальной страницы и располагается поверх него. Другие два параграфа теперь располагаются вместе так будто бы их позиционированный брат не существует. Свойства top и left (en-US) имеют иной эффект на абсолютно позиционированные элементы, чем на относительно позиционированные элементы. В данном случае смещения были рассчитаны сверху и слева от страницы. Возможно изменить родительский элемент так что он становится контейнером, но мы рассмотрим это в уроке по позиционированию.
Fixed positioning
Фиксированное (Fixed) позиционирование удаляет наш элемент из потока документа так же, как и абсолютное позиционирование. Однако, вместо смещения применяемого относительно контейнера, оно применяется относительно окна просмотра. Поскольку элемент остаётся зафиксированным относительно окна просмотра, мы можем создавать такие эффекты как меню, которое остаётся зафиксированным пока страница прокручивается под ним.
Sticky positioning
Примечание: чтобы узнать больше о позиционировании, см. нашу статью Позиционирование.
Макет таблицы
HTML таблицы хороши для отображения табличных данных, но много лет назад — до того, как даже базовый CSS надёжно поддерживался в браузерах — веб-разработчики также использовали таблицы для разметки всей веб-страницы — размещая свои заголовки, нижние колонтитулы, различные колонки и т.д. в разных строках и столбцах таблиц. Это работало в то время, но оно имеет много проблем — разметка таблиц не гибкая, очень тяжёлая в вёрстке, сложна в отладке, и семантически не верная. (например, пользователи скринридеров имеют проблемы с навигацией в табличном макете).
Пример ниже показывает одно такое использование; использование CSS таблиц для вёрстки должно считаться устаревшим методом на данный момент, для тех ситуаций, когда у вас старые браузеры без поддержки Flexbox или Grid.
Давайте взглянем на пример. Во-первых, немного простой разметки, которая создаёт HTML форму. Каждый input элемент имеет label, и мы также заключили описание в параграф. каждая пара label/input обёрнута в
Начало работы с CSS Layout
Дата публикации: 2018-06-27
От автора: за последние несколько лет CSS Layout резко изменился, как и способ разработки интерфейса наших сайтов. Теперь у нас есть реальный выбор с точки зрения методов компоновки, которые мы используем в CSS для разработки наших сайтов, а это значит, что нам часто приходится выбирать, какой подход принять. В этой статье я расскажу о различных методах макета, которые вам доступны, объясняя основы того, как они используются и для чего они используются.
Это руководство для вас, если вы новичок в CSS и задаетесь вопросом, какой лучший способ выбрать к макету, но также, если вы опытный разработчик в другой области стека, который хочет убедиться, что ваше понимание макета сегодня актуально. Я не пытался полностью документировать каждый метод макета здесь, поскольку это создало бы книгу, а не статью. Вместо этого я даю обзор того, что доступно вам, с большим количеством ссылок, чтобы узнать больше.
Нормальный поток
Если вы берете HTML-страницу, на которой CSS не применяется для изменения макета, элементы будут отображаться в обычном режиме. В нормальном потоке окна отображаются один за другим в зависимости от режима записи документа. Это означает, что, если у вас есть режим горизонтальной записи, в котором предложения работают слева направо или справа налево, нормальный поток отображает блоки элементов уровня блока один за другим по вертикали вниз по странице.
Если вы находитесь в режиме вертикальной записи, тогда предложения выполняются вертикально, поэтому нормальный поток будет блокировать блоки горизонтально.
Практический курс по верстке адаптивного сайта с нуля!
Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3
Изменение в блочном и встроенном направлениях с помощью режима записи
Обычный поток начинается с любого макета: при создании макета CSS вы берете блоки и заставляете их делать что-то отличное от обычного потока.
Структурируйте свой документ, чтобы воспользоваться обычным потоком
Вы можете воспользоваться нормальным потоком, гарантируя, что ваш документ начинается в хорошо структурированном виде. Представьте себе, что если вместо этой концепции нормального потока — браузер складывал все ваши поля вверх в углу друг над другом, пока вы не создали макет. Это означало бы, что вам нужно будет размещать все на странице. Вместо этого браузер отображает наш контент в удобном для чтения виде.
Если ваш CSS не загружается, пользователь все равно может прочитать содержимое, а пользователи, которые вообще не получают CSS (например, кто-то, кто использует программу чтения с экрана), будут доставлять контент в том порядке, в котором он находится в документе. Это делает важным с точки зрения доступности, что ваш HTML-документ начинает жизнь в хорошем состоянии; тем не менее, это также упростит вашу жизнь как веб-разработчика. Если ваш контент находится в том порядке, в котором пользователь будет читать его, вам не нужно будет делать значительные изменения в макете, чтобы получить его в нужном месте. С новыми методами компоновки вы можете быть удивлены, как мало вам нужно.
Поэтому, прежде чем думать о макете, подумайте о структуре документа и порядке, в котором вы хотите, чтобы ваш контент читался сверху страницы.
Уход от нормального потока
Когда у нас есть хорошо структурированный документ, нам нужно решить, как это сделать, и превратить его в наш желаемый макет. Это потребует отхода от нормального потока, для частей нашего документа. У нас есть целый набор методов компоновки. Первый метод, который мы рассмотрим — это float, так как float — отличная демонстрация того, что нужно для того, чтобы вывести элемент из нормального потока.
Floats
Floats используются для сдвига блока влево или вправо, позволяя отображать содержимое, обернутое вокруг него.
Используйте float свойство CSS и значение left или right, чтобы добавить элементу обтекание. По умолчанию значение float равно none.
Стоит отметить, что когда вы обтекаете элемент, а текст обтекает его, то происходит то, что линейные блоки этого содержимого сокращаются. Если вы обтекаете элемент, и в следующем поле, содержащем ваш текст, применен цвет фона, вы можете увидеть, что этот фоновый цвет будет выполняться под плавающим элементом.
Цвет фона в содержимом выполняется под float
По мере того, как вы сокращаете строковые поля, чтобы сделать пространство между float и текстом обертывания, вы должны установить отступ для плавающего элемента. Поля текста будут просто перемещать текст с края контейнера. Для изображения, расположенного слева, вы добавили бы поле справа и снизу, предполагая, что вы хотите, чтобы изображение закралось в верхнюю и левую части контейнера.
Очистка float
После того, как вы разместили элемент, все следующие элементы будут обтекать этот плавающий элемент до тех пор, пока они не упадут снизу и нормальный поток не будет продолжен. Если вы хотите предотвратить это, вам нужно очистить float.
На элементе, который вы хотите начать отображать после float, добавьте свойство clear со значением left, чтобы указать очистку элемента, расположенного слева, right, чтобы очистить элемент, плавающий вправо, или both, чтобы очистить любые float.
Вышеуказанный метод работает, если вы хотите, чтобы элемент запускался после float. Это не поможет, если вы окажетесь в ситуации, когда у вас есть плавающий элемент внутри блока, с некоторым текстом рядом. Если текст короче, чем плавающий элемент, поле будет рисоваться под содержимым и игнорировать float. Как мы уже узнали, float сокращает линейные поля, остальная часть макета продолжается в нормальном потоке.
Блок вокруг текста не очищает поплавок
Чтобы предотвратить эту ситуацию, нам нужно очистить что-то внутри блока. Мы могли бы добавить пустой элемент и установить это, чтобы очистить все. Это предполагает использование пустых div в нашем документе, что не является идеальным и может быть невозможным, если ваша страница создается CMS. Таким образом, типичный метод очищающих float — это то, что называется чистым исправлением. Этот метод работает, добавляя CSS-сгенерированный контент и устанавливая его для clear both.
Контекст форматирования блоков
Другой способ очистить float внутри поля — вызвать контекст форматирования блоков (BFC) на контейнере. Контекст форматирования блоков содержит все внутри него, которое включает в себя плавающие элементы, которые больше не могут вытолкнуть нижнюю часть окна. Существует несколько способов принудительного BFC, наиболее часто используемого при очистке float, чтобы установить свойство переполнения для значения, отличного от отображаемого по умолчанию.
Использование overflow таким образом, как правило, будет работать, однако, в определенных ситуациях вы можете получить обрезанные тени или нежелательные полосы прокрутки на элементе. Это также может выглядеть немного запутанным в вашей таблице стилей: вы установили переполнение, потому что вам нужны полосы прокрутки или просто для того, чтобы получить эту способность очистки?
Чтобы сделать намерение более ясным и предотвратить создание BFC, вызывающего нежелательные побочные эффекты, вы можете использовать flow-root как значение свойства display. Единственное, что display: flow-root делает, это создает BFC, тем самым очистив ваши float без каких-либо других проблем.
Использование устаревших float
До появления новых методов компоновки для создания макетов столбцов использовались float, этот метод работал, предоставляя набор элементов шириной и устанавливая их для размещения рядом друг с другом. Тщательное управление процентным размером этих плавающих блоков может создать эффект сетки.
Я бы не предложил начать новый дизайн и использовать этот метод. Тем не менее, он будет оставаться на существующих площадках на многие годы вперед. Поэтому, если вы сталкиваетесь с дизайном, где почти все, кажется, плавают, это используется в технике.
Позиционирование
Чтобы удалить элемент из обычного потока или сдвинуть его со своего места в нормальном потоке, вы можете использовать свойство position в CSS. Когда в нормальном потоке элементы имеют static position. Элементы отображаются один за другим в блочном измерении, и если вы прокручиваете страницу, которую они прокручивают вместе с ней.
При изменении значения position вы обычно также используете значения смещения, чтобы перемещать поле вокруг определенной точки отсчета. Используемая опорная точка зависит от значения используемой позиции.
Относительное позиционирование
Если позиция имеет position: relative то контрольная точка — это место, которое обычно было бы в нормальном потоке. Затем вы можете использовать значения смещения для свойств top, left, bottom и right, чтобы переместить поле, из которого оно обычно отображается.
Обратите внимание, что другие элементы на странице не отвечают на новую позицию вашего элемента. Место, где оно было размещено в нормальном потоке, зарезервировано, поэтому вам нужно управлять любыми перекрытиями самостоятельно.
Абсолютное позиционирование
Установите position: absolute значение для элемента, и он будет полностью удален из нормального потока. Пространство, оставшееся для него, будет удалено. Затем элемент будет располагаться относительно его содержащего блока, который, если он не вложен в другой позиционированный элемент, будет вьюпортом.
Поэтому первое, что произойдет, если вы установите position: absolute значение элемента — это то, что оно обычно заканчивается сверху и слева от окна просмотра. Затем вы можете использовать значения смещения для свойств top, left, bottom и right, чтобы переместить блок из этой позиции туда, где вы хотите.
Часто вы не хотите, чтобы блок располагался в соответствии с окном просмотра, но в отношении содержащего элемента он находится внутри. В этом случае вам нужно предоставить этому содержащему элементу значение позиции, отличное от статического значения по умолчанию.
В качестве установочного position: relative не удаляет элемент из обычного потока, это обычный выбор. Дайте родительскому элементу, что вы хотите установить смещения из position: relative, а затем смещать абсолютно позиционированный блок из границ этого элемента.
Фиксированное позиционирование
Что-то с position: fixed будет расположено в большинстве случаев относительно окна просмотра и удалено из потока документов, чтобы для него не было зарезервировано места. Когда страница прокручивается, фиксированный элемент остается в положении относительно окна просмотра, поскольку остальная часть содержимого в обычных прокрутках потока, как обычно.
Это может быть полезно для включения фиксированной панели навигации, которая остается на экране, например, пока прокручивается контент. Как и в случае с другими значениями позиционирования, вы можете вызывать перекрытия при выполнении этого, чтобы вы следили за тем, чтобы все содержимое могло быть прочитано и не попало за фиксированный элемент.
Чтобы позиционировать фиксированный элемент, отличный от соответствующего окна просмотра, вам необходимо иметь содержащий элемент с одним из свойств transform, perspective или filter установленным для чего-то другого, кроме значения по умолчанию для него. В этом случае этот элемент станет содержащим блоком, а ваши смещения связаны с этим блоком, а не с окном просмотра.
Прикрепленное позиционирование
Это способ создания популярного эффекта прокрутки навигационной панели с содержимым, а затем остановки в верхней части окна просмотра, чтобы оставаться на экране при прокрутке содержимого.
Flex Layout
Гибкая компоновка блоков (Flexbox) — это метод компоновки, разработанный для одномерной компоновки. Одномерное означает, что вы хотите выложить контент в строке или в виде столбца. Чтобы превратить ваш элемент в гибкий макет, вы используете свойство display со значением flex.
Прямые дети этого элемента становятся гибкими элементами, они выкладываются как ряд, выровненный по отношению к стартовому краю в линейном направлении.
Оси Flexbox
В приведенном выше примере я описал элементы как выровненные по отношению к начальному краю нашей строки в строчном направлении, вместо того, чтобы описывать их как выровненные слева. Наши элементы выложены подряд, потому что значение по умолчанию для свойства flex-direction является строковым, это создает строку в строчном направлении, направление, по которому выполняются предложения. Поскольку мы работаем на английском языке, слева направо, начало строки находится слева, и поэтому наши объекты начинаются там. Таким образом, значение направления flex-direction определяет основную ось Flexbox.
Поэтому поперечная ось проходит по главной оси под прямым углом. Если ваше flex-direction является строковым, а ваши элементы отображаются в строчном направлении, ваша поперечная ось работает в направлении «block». Если ваше flex-direction – column, то элементы работают в направлении блока, тогда ваша поперечная ось находится вдоль строки.
Если вы используете мышление с точки зрения основной и поперечной оси при работе с Flexbox, это облегчит многое.
Направление и порядок
Flexbox дает вам возможность изменять направление элементов на главной оси, используя значение flex-direction сгиба в row-reverse или row-reverse column-reverse.
Вы также можете изменить порядок отдельных элементов гибкости с помощью свойства order. Однако при этом вы должны проявлять большую осторожность, так как это может вызвать проблему для любого пользователя, который перемещается с помощью клавиатуры, а не мыши или сенсорного экрана, поскольку порядок вкладок документа будет соответствовать порядку, в котором находится содержимое. Дополнительную информацию см. в разделе ниже на Visual и Document Order.
Свойства Flex
Свойства flex — это то, как управлять отношениями гибких элементов вдоль основной оси. Три свойства: flex-grow, flex-shrink, flex-basis.
Они обычно используются в их сокращенной форме свойства flex, первое значение является flex-grow, второе flex-shrink и третье flex-basis.
Значение flex-basis дает размер, который будет иметь элемент перед тем, как произойдет рост или сжатие. В приведенном выше примере этот размер составляет 200 пикселей, поэтому мы дадим каждому элементу 200 пикселей пространства. Маловероятно, что наш контейнер будет аккуратно делить на 200 пикселей, и, таким образом, будет оставлено пространство или недостаточно места для всех элементов, если у каждого из них будет 200 пикселей. Свойства flex-grow и flex-shrink позволяют нам контролировать, что происходит с элементами, если для них слишком много или недостаточно места.
Если flex-grow настроен на любое положительное значение, тогда предмет может расти, чтобы занять место. Поэтому в нашем примере выше, после предоставления каждому элементу 200 пикселей, любое дополнительное пространство будет разделяться между элементами.
Если flex-shrink установлен на положительное значение, тогда элемент может сжиматься в ситуации, когда произойдет переполнение, если все элементы были предоставлены для их flex-basis. Если в нашем контейнере было недостаточно места в контейнере, каждый элемент уменьшал бы равное количество, чтобы уменьшить, пока все элементы не поместится в контейнере.
Значения flex-grow и flex-shrink могут быть любым положительным значением. Элементу с большим значением flex-grow будет дано больше свободного места в пропорции при выращивании, а при увеличении значения flex-shrink при сжатии будет удалено больше.
Понимание того, как эти свойства flex работают, действительно является ключом к пониманию Flexbox, а перечисленные ниже ресурсы предоставят вам все детали. Однако рассмотрите возможность использования Flexbox, когда у вас есть куча вещей, которые вы хотите растянуть и проглотить в контейнер в одном измерении. Если вы попытаетесь выстроить строки в строках и столбцах, вам понадобится Grid, и в этом случае Flexbox, вероятно, не является инструментом для работы.
Grid Layout
CSS Grid Layout был разработан как двумерный метод компоновки. Двумерное означает, что вы хотите разместить свой контент в строках и столбцах. Как и в случае с Flexbox, Grid Layout представляет собой значение display поэтому для начала использования Grid вы должны начать с display: grid на вашем контейнере, а затем настроить некоторые столбцы и / или строки, используя grid-template-columns grid-template-rows и grid-template-rows.