Сетка в интерфейсе: как проектировать layout и не терять порядок при масштабировании

Сетка в интерфейсе: как проектировать layout и не терять порядок при масштабировании

Коротко:

  • Сетка - это не эстетика, а система выравнивания, которая удерживает интерфейс от хаоса при добавлении новых экранов и компонентов.
  • Колонки, отступы (gutter) и поля (margin) работают вместе: изменить одно без пересчёта остального не получится.
  • Для большинства продуктов достаточно 4- или 8-колоночной сетки на мобайле и 12-колоночной на десктопе.
  • Breakpoints выбирают под контент, а не под конкретные устройства: ориентир - когда layout начинает ломаться.
  • Частая ошибка - сделать сетку в Figma и не передать её параметры в разработку: тогда реализация расходится с макетом.

Зачем вообще нужна сетка

Когда дизайнер расставляет элементы «на глаз», первые два-три экрана выглядят нормально. Проблемы начинаются позже: новый разработчик не понимает, почему кнопка стоит именно здесь, а не на 8px правее. Другой дизайнер добавляет блок и нарушает ритм, который был в остальных экранах. Продукт начинает выглядеть собранным из разных источников.

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

Кроме консистентности, есть и практическая польза: сетка ускоряет работу. Дизайнер не думает каждый раз, где поставить блок - он просто следует правилу. Разработчик не угадывает отступы - он берёт значения из системы.

Из чего состоит сетка

Прежде чем настраивать параметры, полезно разобраться, что именно настраивается. Сетка в интерфейсе состоит из трёх элементов.

ЭлементЧто этоНа что влияет
Колонки (columns)Вертикальные полосы, по которым выравнивается контентШирина блоков, пропорции layout
Отступы между колонками (gutter)Пространство между соседними колонкамиВоздух между блоками, читаемость
Поля (margin)Отступ от края экрана до первой и последней колонкиОщущение «рамки», безопасная зона контента

Иногда к этому добавляют базовую единицу - шаг сетки. Чаще всего это 4px или 8px. Все размеры и отступы в интерфейсе кратны этому числу. Это упрощает согласование между дизайном и кодом: разработчик не получает значений вроде 13px или 22px, которые сложно объяснить и поддерживать.

Как выбрать количество колонок

Универсального ответа нет - выбор зависит от типа продукта, плотности контента и ширины экрана. Но есть рабочие ориентиры.

На мобильных экранах (до 480px) обычно используют 4 колонки. Контента мало, пространство узкое, сложная сетка только мешает. Четыре колонки дают достаточно гибкости: блок на всю ширину занимает 4 колонки, карточка - 2, иконка - 1.

На планшетах (480-1024px) переходят к 8 колонкам. Это промежуточный формат, где уже можно строить двухколоночные layout, но 12 колонок ещё создают лишнюю сложность.

На десктопе (от 1024px) стандарт - 12 колонок. Эта система пришла из веб-фреймворков вроде Bootstrap и стала де-факто нормой. Двенадцать делится на 2, 3, 4 и 6 - это даёт большую гибкость при построении сложных layout без дробных значений.

Пример: Представим дашборд аналитики. На десктопе три карточки с метриками стоят рядом - каждая занимает 4 колонки из 12. График под ними - 8 колонок, боковая панель фильтров - 4. На планшете карточки перестраиваются в две строки по 4 колонки из 8. На мобайле каждая карточка занимает все 4 колонки и выстраивается в столбик. Одна система, три поведения.

Параметры, которые чаще всего выбирают неправильно

Gutter слишком маленький или слишком большой

Gutter - это не просто пространство между колонками. Это визуальный сигнал о том, насколько блоки связаны между собой. Слишком маленький отступ (4-8px) делает интерфейс плотным и тяжёлым. Слишком большой (40px и выше) разрывает связи между элементами и создаёт ощущение разрозненности.

Рабочий диапазон для большинства продуктов: 16-24px на мобайле, 24-32px на десктопе. Это не жёсткое правило, но хорошая точка отсчёта.

Поля не учитывают безопасную зону

На мобильных устройствах края экрана - опасная зона. Пальцы перекрывают крайние 16-20px с каждой стороны. Если поставить margin в 8px, контент будет физически неудобно читать и нажимать. Минимальный margin на мобайле - 16px, комфортный - 20-24px.

На десктопе поля работают иначе: они ограничивают максимальную ширину контентной зоны. Если не задать max-width, на широких мониторах строки текста растянутся до 1400px - читать такое невозможно. Обычно контентная зона ограничивается 1200-1440px и центрируется.

Сетка не зафиксирована как компонент

В Figma сетку можно задать в стилях и применить к фреймам. Если этого не сделать, каждый дизайнер настраивает её вручную - и рано или поздно значения расходятся. Один поставит gutter 24px, другой - 20px. Внешне разница незаметна, но при передаче в разработку начинается путаница.

Breakpoints: как выбрать точки перехода

Breakpoint - это ширина экрана, при которой layout меняется. Классический подход - привязать их к популярным устройствам: 375px для iPhone, 768px для iPad, 1440px для десктопа. Это работает, но не всегда правильно.

Проблема в том, что устройств слишком много и их размеры постоянно меняются. Лучший ориентир - сам контент. Breakpoint нужен там, где текущий layout начинает ломаться: строки становятся слишком короткими, карточки - слишком узкими, колонки - нечитаемыми.

Практический подход: возьмите самый широкий вариант layout и начните сужать браузер. В момент, когда что-то «ломается» визуально, - это и есть точка для breakpoint. Такой метод даёт breakpoints под конкретный продукт, а не под абстрактные устройства.

Типичные диапазоны для большинства продуктов:

  • до 480px - мобайл, 4 колонки
  • 480-768px - большой мобайл и маленький планшет, 4-8 колонок
  • 768-1024px - планшет, 8 колонок
  • от 1024px - десктоп, 12 колонок

Fluid vs fixed: какую сетку выбрать

Фиксированная сетка (fixed) имеет постоянную ширину колонок. При изменении размера окна колонки не меняются - меняется только количество видимых колонок или появляется горизонтальный скролл. Такой подход проще в реализации, но плохо адаптируется к промежуточным размерам экрана.

Резиновая сетка (fluid) использует процентные значения. Колонки растягиваются вместе с экраном. Это даёт плавную адаптацию, но требует аккуратной работы с минимальными и максимальными размерами - иначе на очень широких экранах блоки становятся некомфортно большими.

На практике большинство современных продуктов используют гибридный подход: fluid-сетка внутри фиксированного max-width контейнера. Колонки растягиваются до определённого предела, после чего контентная зона перестаёт расти и центрируется на экране.

Сетка и компонентный подход

Сетка не существует отдельно от компонентов. Каждый компонент - кнопка, карточка, форма, таблица - должен вписываться в систему колонок. Если компонент спроектирован с фиксированной шириной 340px, а сетка предполагает колонки по 280px или 420px, компонент будет постоянно «выбиваться» из layout.

Правильный подход: проектировать компоненты в единицах колонок, а не в пикселях. Карточка занимает 4 из 12 колонок - и тогда она корректно встаёт в любой layout, который использует эту сетку. При изменении параметров сетки компонент адаптируется автоматически.

Это особенно важно при работе с дизайн-системой. Если токены размеров и сетка согласованы, добавление нового экрана не требует пересчёта всех отступов вручную.

Как передать сетку в разработку

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

Минимум, который нужно зафиксировать в документации к хендофу:

  • Количество колонок для каждого breakpoint
  • Значение gutter в пикселях
  • Значение margin (поля) для каждого breakpoint
  • Максимальная ширина контентной зоны
  • Базовая единица (4px или 8px)

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

Частая проблема: дизайнер настраивает сетку в Figma как визуальный ориентир, но не документирует её параметры. Разработчик смотрит на макет, угадывает значения и получает «примерно похоже». При масштабировании продукта такие расхождения накапливаются и превращаются в технический долг по верстке.

Типичные ошибки при работе с сеткой

Игнорировать сетку на этапе вайрфреймов. Сетку часто добавляют «потом, когда будет финальный дизайн». В результате вайрфреймы рисуются произвольно, а при переходе к финальным макетам всё приходится переделывать под систему колонок.

Использовать разные сетки на разных экранах одного продукта. Один дизайнер настроил 12 колонок с gutter 24px, другой - 16 колонок с gutter 20px. Оба варианта могут выглядеть нормально по отдельности, но вместе создают несогласованный продукт.

Нарушать сетку «ради красоты». Иногда хочется сдвинуть элемент на несколько пикселей, чтобы он «смотрелся лучше». Если это происходит регулярно, скорее всего проблема не в элементе, а в параметрах сетки - их нужно пересмотреть, а не делать исключения.

Не проверять layout на промежуточных размерах. Дизайнер проверяет мобайл (375px) и десктоп (1440px), но не смотрит, что происходит на 600px или 900px. Именно там чаще всего обнаруживаются сломанные layout и неожиданные переносы.

Путать сетку с baseline grid. Колоночная сетка управляет горизонтальным расположением блоков. Baseline grid - это горизонтальная система для выравнивания текста по строкам. Это разные инструменты с разными задачами, и использовать их нужно вместе, а не вместо друг друга.

Когда сетка не нужна или мешает

Сетка - инструмент, а не религия. Есть ситуации, где жёсткое следование системе колонок создаёт больше проблем, чем решает.

Лендинги с нестандартным визуальным языком часто намеренно нарушают сетку - это часть их выразительности. Элементы выходят за пределы колонок, перекрывают друг друга, создают динамику. Здесь сетка служит отправной точкой, от которой сознательно отступают.

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

Нативные мобильные приложения иногда работают с другими принципами компоновки - особенно если используются системные компоненты iOS или Android, которые имеют собственные правила расположения.

Чеклист: сетка готова к работе

  1. Зафиксированы параметры для каждого breakpoint: колонки, gutter, margin
  2. Базовая единица (4px или 8px) согласована с командой
  3. Сетка сохранена как стиль в Figma и применена ко всем фреймам
  4. Компоненты спроектированы в единицах колонок, а не в фиксированных пикселях
  5. Проверены промежуточные размеры экрана, а не только крайние точки
  6. Параметры сетки задокументированы для разработки
  7. Максимальная ширина контентной зоны определена для десктопа
  8. Отступы от краёв экрана на мобайле не меньше 16px

Сетка в реальных сценариях: таблицы, формы и дашборды

Абстрактные правила про 12 колонок легко понять, но сложнее применить, когда перед тобой конкретный экран. Разные типы контента ведут себя по-разному в одной и той же системе.

Формы хорошо работают в узкой зоне: 6-8 колонок из 12 на десктопе. Широкая форма на весь экран заставляет глаза бегать слишком далеко между лейблом и полем. Исключение - формы с несколькими колонками полей (например, имя и фамилия рядом): тут нужно явно решить, какие поля занимают по 3 колонки, а какие - 6.

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

Дашборды - самый сложный случай. Здесь одновременно живут карточки с метриками, графики, таблицы и фильтры. Рабочий подход: разбить экран на зоны (верхняя строка метрик, основной контент, боковая панель) и для каждой зоны зафиксировать, сколько колонок она занимает. Внутри зоны уже можно использовать вложенную сетку.

Вложенные сетки: когда и как использовать

Вложенная сетка возникает, когда внутри блока нужна своя система выравнивания. Например, карточка занимает 4 колонки основной сетки, но внутри неё есть иконка, заголовок и текст, которые тоже должны быть выровнены по какой-то системе.

Здесь важно не усложнять. Вложенная сетка оправдана, если блок достаточно сложный и переиспользуется в разных местах. Для простых карточек достаточно фиксированных внутренних отступов, кратных базовой единице.

Частая ошибка: создавать вложенную сетку с другим количеством колонок, чем у родительской. Например, 12-колоночная основная сетка и 5-колоночная вложенная. Это создаёт несогласованные значения, которые невозможно описать в токенах и сложно реализовать в коде. Лучше использовать то же количество колонок или простые дроби от него.

Хороший признак того, что вложенная сетка настроена правильно: разработчик может описать её параметры одной строкой в CSS без магических чисел. Если для объяснения нужна длинная переписка или скриншоты с пояснениями, скорее всего параметры стоит пересмотреть.

Сравнение подходов к организации отступов

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

ПодходСутьКогда подходитРиски
Отступы только снаружи компонентаКомпонент не имеет внешних margin, отступы задаются контейнеромДизайн-системы, переиспользуемые компонентыТребует дисциплины в контейнерах
Отступы внутри компонентаКаждый компонент сам управляет своими внешними отступамиНебольшие проекты без системыКонфликты при соседстве компонентов
Spacing-токеныВсе отступы берутся из фиксированного набора значений (4, 8, 12, 16, 24, 32...)Масштабируемые продукты с несколькими дизайнерамиНужна синхронизация с разработкой
Auto layout с gapОтступы между элементами задаются через gap в контейнереFigma-макеты с активным использованием auto layoutНе всегда переносится в код напрямую

На практике большинство зрелых команд приходит к комбинации spacing-токенов и auto layout. Токены дают единый словарь значений, auto layout позволяет быстро собирать и перестраивать компоненты без ручного пересчёта отступов.

Как проверить, что система работает

Настроить параметры в Figma недостаточно. Нужно убедиться, что система держится при реальном использовании. Несколько практических проверок, которые стоит сделать до финального хендофа.

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

Попросите другого дизайнера собрать один экран по вашей системе без объяснений. Если у него получилось - система понятна. Если возникли вопросы про отступы или выравнивание - документация неполная.

Проверьте, как выглядит интерфейс при увеличении шрифта в браузере до 150%. Это не только тест доступности, но и проверка устойчивости layout: хорошая система не ломается при изменении размера текста.

Наконец, сравните реализацию в браузере с макетом на нескольких экранах. Расхождения больше 4px в отступах - сигнал, что параметры не были переданы или поняты правильно. Небольшие расхождения неизбежны, но системные - это проблема, которую нужно решать на уровне документации, а не точечными правками.

FAQ

Что такое сетка в интерфейсном дизайне?

Это система колонок, отступов и полей, которая определяет, как элементы выравниваются на экране. Сетка не видна пользователю, но задаёт структуру, которая делает интерфейс консистентным и предсказуемым при масштабировании.

Сколько колонок использовать на мобайле?

Обычно 4. Это даёт достаточно гибкости для большинства мобильных layout: блок на всю ширину, двухколоночные карточки, одиночные элементы. Больше колонок на узком экране создаёт лишнюю сложность без реальной пользы.

Чем отличается gutter от margin?

Gutter - это отступ между колонками внутри сетки. Margin - отступ от края экрана до первой и последней колонки. Оба параметра влияют на воздух в интерфейсе, но управляют разными зонами.

Как выбрать breakpoints?

Лучший способ - сужать браузер и смотреть, где layout начинает ломаться. Это даёт breakpoints под конкретный контент продукта, а не под абстрактные размеры устройств. Привязка к конкретным моделям телефонов работает хуже, потому что устройств слишком много.

Нужно ли передавать параметры сетки разработчику?

Обязательно. Без этого разработчик угадывает значения по макету, и реализация расходится с дизайном. Минимум - зафиксировать количество колонок, gutter, margin и max-width для каждого breakpoint.

Можно ли нарушать сетку?

Да, если это осознанное решение. Выход за пределы колонок может быть частью визуального языка. Проблема начинается, когда сетку нарушают случайно или из-за того, что параметры изначально выбраны неправильно.

Что такое baseline grid и нужна ли она?

Это горизонтальная сетка для выравнивания текста по строкам. Она работает вместе с колоночной сеткой, а не вместо неё. Для большинства продуктов достаточно следить за тем, чтобы размеры шрифтов и межстрочные интервалы были кратны базовой единице (4px или 8px).

Итог

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

Главное - не искать «правильную» сетку в интернете, а настроить её под конкретный продукт: тип контента, устройства, команду. Зафиксировать параметры, применить ко всем фреймам и передать разработчикам в понятном виде. Остальное - детали, которые решаются по ходу работы.