PurpleSchool — курсы программирования онлайн
  • Пути
    • Frontend React разработчик
    • Frontend Vue разработчик
    • Backend разработчик Node.js
    • Fullstack разработчик React / Node.js
    • Mobile разработчик React Native
    • Backend разработчик Golang
    • Devops инженер
    • Backend разработчик Python
  • AI для кодаНовое
  • О нас
    • Отзывы
    • Реферальная программа
    • О компании
    • Контакты
  • Иконка открытия меню
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
PurpleSchool — платформа бесплатных roadmap и курсов для разработчиков
ютуб иконка
Telegram иконка
VK иконка
VK иконка
Курсы
ГлавнаяКаталог курсовFrontendBackendFullstack
Практика
КарьераПроектыPurpleПлюс
Материалы
БлогБаза знаний
Документы
Договор офертаПолитика конфиденциальностиПроверка сертификатаМиграция курсовРеферальная программа
Реквизиты
ИП Ларичев Антон АндреевичИНН 773373765379contact@purpleschool.ru

PurpleSchool © 2020 -2026 Все права защищены

  • Курсы
    • FrontendИконка стрелки
    • AI разработкаИконка стрелки
    • BackendИконка стрелки
    • DevOpsИконка стрелки
    • MobileИконка стрелки
    • ТестированиеИконка стрелки
    • Soft-skillsИконка стрелки
    • ДизайнИконка стрелки
    Иконка слояПерейти в каталог курсов
  • Бесплатно
    • Курсы
    • JavaScript Основы разработкиPython Основы PythonCSS CSS FlexboxКарта развитияВопросы для собеседований
    • База знанийИконка стрелки
    • Новостные рассылкиИконка стрелки
  • PurpleSchool — курсы программирования онлайн
    • AI для кодаНовое
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
    Главная
    Сообщество
    CSS Grid: полное руководство по сеткам в 2024

    CSS Grid: полное руководство по сеткам в 2024

    Аватар автора CSS Grid: полное руководство по сеткам в 2024

    Антон Ларичев

    Иконка календаря18 июля 2026
    csscss-gridвёрсткаfrontendlayoutmiddleИконка уровня middle
    Картинка поста CSS Grid: полное руководство по сеткам в 2024

    Введение

    CSS Grid — это двумерная система вёрстки, которая позволяет управлять строками и столбцами одновременно. В отличие от Flexbox, ориентированного на одно измерение, Grid даёт полный контроль над расположением элементов в обоих направлениях. Сегодня Grid поддерживается во всех современных браузерах и является стандартом для построения сложных макетов.

    Базовые концепции

    Грид-контейнер создаётся одним свойством:

    .container {
      display: grid;
      /* или inline-grid для строчного контейнера */
    }
    

    Все прямые дочерние элементы автоматически становятся грид-элементами.

    Определение колонок и строк

    Свойства grid-template-columns и grid-template-rows задают структуру сетки:

    .container {
      display: grid;
      /* три колонки: фиксированная, гибкая, фиксированная */
      grid-template-columns: 200px 1fr 200px;
      /* две строки фиксированной высоты */
      grid-template-rows: 80px 1fr;
      gap: 16px;
    }
    

    Единица fr (fraction) означает долю свободного пространства. Запись 1fr 2fr 1fr создаёт три колонки в соотношении 1:2:1.

    Функция repeat()

    Для повторяющихся треков используется repeat():

    .grid {
      /* 12 равных колонок */
      grid-template-columns: repeat(12, 1fr);
      /* чередование фиксированной и гибкой */
      grid-template-columns: repeat(3, 100px 1fr);
    }
    

    Ключевые слова auto-fill и auto-fit

    .responsive-grid {
      /* автоматически создаёт столько колонок, сколько помещается */
      grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
      gap: 24px;
    }
    

    Разница между auto-fill и auto-fit: первый сохраняет пустые треки, второй сжимает их до нуля, растягивая заполненные элементы.

    Размещение элементов

    По номерам линий

    Грид-линии нумеруются с 1. Элемент можно растянуть через несколько ячеек:

    .header {
      /* от первой до последней линии по горизонтали */
      grid-column: 1 / -1;
      grid-row: 1 / 2;
    }
    
    .sidebar {
      grid-column: 1 / 2;
      /* от второй строки, занимает 3 трека */
      grid-row: 2 / span 3;
    }
    
    .main {
      grid-column: 2 / -1;
      grid-row: 2 / -1;
    }
    

    Именованные области

    Наиболее читаемый способ описания макета:

    .layout {
      display: grid;
      grid-template-columns: 240px 1fr 320px;
      grid-template-rows: 64px 1fr 48px;
      grid-template-areas:
        "header  header  header"
        "sidebar main    aside"
        "footer  footer  footer";
      min-height: 100vh;
      gap: 0;
    }
    
    .header  { grid-area: header; }
    .sidebar { grid-area: sidebar; }
    .main    { grid-area: main; }
    .aside   { grid-area: aside; }
    .footer  { grid-area: footer; }
    

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

    Grid поддерживает два уровня выравнивания: всего содержимого внутри контейнера и каждого элемента в его ячейке.

    .container {
      /* выравнивание всей сетки внутри контейнера */
      justify-content: center;  /* по горизонтали */
      align-content: start;     /* по вертикали */
    
      /* выравнивание всех элементов в их ячейках */
      justify-items: stretch;   /* по горизонтали */
      align-items: center;      /* по вертикали */
    }
    
    .item {
      /* переопределение для конкретного элемента */
      justify-self: end;
      align-self: start;
      /* сокращение: выравнивание по обеим осям */
      place-self: center;
    }
    

    Неявная сетка

    Если элементов больше, чем ячеек в явной сетке, Grid создаёт новые треки автоматически:

    .auto-grid {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      /* размер автоматически создаваемых строк */
      grid-auto-rows: minmax(120px, auto);
      /* направление автоматического потока */
      grid-auto-flow: row dense;
    }
    

    Режим dense заполняет дыры в сетке, перемещая меньшие элементы вперёд. Полезно для галерей с элементами разного размера.

    Практический пример: карточная галерея

    .gallery {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
      grid-auto-rows: 200px;
      grid-auto-flow: dense;
      gap: 16px;
      padding: 16px;
    }
    
    /* широкая карточка занимает 2 колонки */
    .card--wide {
      grid-column: span 2;
    }
    
    /* высокая карточка занимает 2 строки */
    .card--tall {
      grid-row: span 2;
    }
    
    /* акцентная карточка занимает 2x2 */
    .card--featured {
      grid-column: span 2;
      grid-row: span 2;
    }
    

    Частые ошибки

    1. Использование Grid вместо Flexbox для одномерных макетов

    Если нужно выровнять элементы только по одной оси — это задача для Flexbox. Grid оправдан, когда важна координация строк и столбцов одновременно.

    2. Жёсткие пиксельные размеры вместо гибких

    /* плохо: сетка сломается на маленьких экранах */
    grid-template-columns: 300px 300px 300px;
    
    /* хорошо: адаптируется к ширине контейнера */
    grid-template-columns: repeat(3, 1fr);
    

    3. Игнорирование minmax() при адаптивных сетках

    /* без minmax элементы могут стать слишком узкими */
    grid-template-columns: repeat(auto-fill, 1fr);
    
    /* с minmax задаётся минимально допустимый размер */
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    

    4. Злоупотребление отрицательными индексами линий

    Запись grid-column: 1 / -1 работает только в явной сетке. В неявной (когда используется grid-auto-columns) последняя линия -1 не соответствует ожидаемому концу.

    5. Забытые gap вместо устаревших grid-gap

    Свойство grid-gap является устаревшим псевдонимом. Используйте стандартное gap, которое работает как в Grid, так и в Flexbox.

    Заключение

    CSS Grid кардинально меняет подход к построению макетов: вместо последовательных трансформаций вложенных блоков вы декларируете структуру сетки и назначаете элементам позиции. Ключевые инструменты — fr, repeat(), minmax(), grid-template-areas и auto-fill/auto-fit — решают большинство задач без медиазапросов. Для глубокого освоения важно практиковаться на реальных макетах: начните с переработки существующих Flexbox-раскладок и постепенно переходите к сложным журнальным сеткам.

    Иконка глаза751

    Комментарии

    0

    Постройте личный план изучения JavaScript с нуля - основы языка и практика для начинающих до уровня Middle — бесплатно!

    JavaScript с нуля - основы языка и практика для начинающих — часть карты развития Frontend, Backend, Mobile

    • step100+ шагов развития
    • lessons30 бесплатных лекций
    • lessons300 бонусных рублей на счет

    Бесплатные лекции

    Лучшие курсы по теме

    изображение курса

    Продвинутый JavaScript

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    TypeScript с нуля

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    Neovim

    Антон Ларичев
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее

    Похожие статьи

    Картинка поста Claude без VPN в России: как пользоваться в 2026
    Иконка аватараАнтон
    Иконка календаря16 октября 2026
    AnthropicAI-инструментыClaude CodejuniorИконка уровня junior

    Claude без VPN в России: как пользоваться в 2026

    Сайт claude.ai и приложения Claude из России без VPN не работают: Anthropic не включает Россию в список поддерживаемых регионов и закрывает доступ и к чату, и к API. Без VPN Claude доступен одним способом — через API-посредника, который сам обращается к Anthropic из поддерживаемой страны, а вам выдаёт ключ с оплатой в рублях. Так работает AI для кода от PurpleSchool: ключ подключается к Claude Code, VS Code, Cursor и другим инструментам разработчика, а также к вашему собственному коду. Окно чата как на claude.ai такой способ не даёт — это доступ к модели, а не к сайту.

    Иконка чипа0
    Иконка глаза74
    Иконка комментариев0
    Картинка поста Как настроить CI/CD пайплайн с нуля: полное руководство
    Иконка аватараАнтон
    Иконка календаря14 октября 2026
    CI/CDDevOpsGitHub Actions+ 2middleИконка уровня middle

    Как настроить CI/CD пайплайн с нуля: полное руководство

    CI/CD пайплайн с нуля: как собрать рабочий конвейер сборки, тестов и деплоя на примере GitHub Actions и Docker без лишней теории.

    Иконка чипа0
    Иконка глаза120
    Иконка комментариев0
    Картинка поста CLAUDE.md: как написать инструкции для Claude Code
    Иконка аватараАнтон
    Иконка календаря11 октября 2026
    AI-инструментыClaude CodeDevOps+ 1middleИконка уровня middle

    CLAUDE.md: как написать инструкции для Claude Code

    CLAUDE.md — это файл с инструкциями по проекту, который Claude Code читает в начале каждой сессии. Положите его в корень репозитория и опишите внутри, чем проект собирается, чем запускаются тесты и каких соглашений держаться в коде. После этого агент перестанет спрашивать одно и то же в каждом новом диалоге и предлагать решения, которые в вашей кодовой базе не приняты. Формат предельно простой: обычный Markdown, обязательных полей нет, заголовки любые. Дальше — где именно создавать файл и как Claude Code собирает инструкции сразу из нескольких мест, что писать внутрь, как подключать к файлу другие документы и чем CLAUDE.md отличается от AGENTS.md. Одна оговорка перед началом: Claude Code обновляется часто, набор команд и поддерживаемых файлов пополняется. Если какая-то деталь ниже ведёт себя у вас иначе, сверяйтесь с документацией той версии, которая стоит у вас.

    Иконка чипа0
    Иконка глаза351
    Иконка комментариев0
    Иконка чипа+1