От макета к коду: Figma, передача и работа с ИИ
Зачем:Вы поймёте, как дизайнер работает в Figma (кадры, автолейаут, компоненты, переменные) и что именно нужно разработчику при передаче макета. После урока вы напишете спецификацию передачи для первого экрана своего проекта, по которой его можно сверстать без вопросов, в том числе поручить ИИ.
30 минут
Озвучено синтезом речи (Qwen3-TTS), голос не принадлежит человеку.
Передача макета (handoff) — подготовка макета из Figma к вёрстке: названные слои, компоненты, переменные вместо чисел, все состояния и узкий экран.
Как дизайнер видит страницу
Дизайнер работает не в коде, а в инструменте для макетов. Самый распространённый называется Figma; есть открытый аналог Penpot. Принцип у них общий: холст, на нём кадры, в кадрах слои. Хорошо знать несколько слов из их словаря, потому что именно ими макет разговаривает с кодом.
- Кадр (frame). Прямоугольник с содержимым, «экран» или блок. В коде ему соответствует элемент (
div,section). - Автолейаут (auto layout). Кадр, который сам раскладывает детей в строку или столбец с заданным промежутком и отступами. Это почти точно
display: flexсgapиpadding. У ширины три режима: Hug (по содержимому), Fill (занять всё место, какflex: 1) и Fixed (числом). - Компонент и варианты. Деталь, которую можно повторять; варианты (основная и второстепенная кнопка, нажатая и обычная) собраны в один компонент с «свойствами». В коде это компонент и его модификаторы.
- Переменные (variables) и режимы (modes). Именованные значения (цвета, числа), у которых бывает несколько определений по режимам: например, светлая и тёмная тема. Figma сама говорит, что на них можно строить дизайн-токены.
- Dev Mode. Рабочее место разработчика в Figma: он видит размеры, свойства слоёв, переменные и код, а дизайнер может пометить макет «готов к разработке».
Нажмите на детали макета ниже: слева то, что поставил дизайнер, справа тот же смысл в CSS. Обратите внимание, что всюду стоят имена токенов, а не числа.
Слой: Card
- Auto layout: вертикально
- Отступы: space/4 (16)
- Промежуток: space/2 (8)
- Ширина: заполнить контейнер
- Скругление: radius/md
- Заливка: surface/raised
.card {
display: flex;
flex-direction: column;
gap: var(--space-2);
padding: var(--space-4);
border-radius: var(--radius-md);
background: var(--surface-raised);
}| В макете | В коде |
|---|---|
| Frame (кадр) | элемент блока: div, section |
| Auto layout | display: flex (направление, gap, padding, выравнивание) |
| Hug / Fill / Fixed | ширина по содержимому / flex: 1 или 100 % / число |
| Component и variant | компонент: класс и модификатор (btn, btn--secondary) |
| Variables (переменные), modes | CSS-переменные; режимы это темы ([data-theme]) |
| Constraints | позиционирование и поведение при изменении ширины |
| Dev Mode | режим, где разработчику видны размеры, токены и код |
Проверьте себя: чему в вёрстке соответствует автолейаут?
display: flex: направление, промежуток (gap), отступы (padding) и выравнивание.
Что нужно разработчику: макет, готовый к передаче
Передача макета (handoff) ломается там, где дизайнер уверен, что «всё же очевидно». Список того, без чего придётся задавать вопросы:
- Названные слои.
Hero/Title,Hero/Action,Cards/Item, а не «Frame 482». По названиям разработчик находит нужное, а ИИ-инструмент получает осмысленные имена. - Компоненты, а не копии. Если кнопка нарисована десять раз, а не взята из компонента, то и в коде их будет десять.
- Переменные вместо случайных значений. Цвет, взятый из переменной
color/accent, превращается вvar(--action). Цвет, подобранный «пипеткой», превращается в число, которое потом никто не найдёт. - Все состояния главных компонентов: наведение, фокус, недоступно, загрузка, ошибка.
- Узкий экран. Не обязательно рисовать все страницы, но поведение надо описать: что идёт в одну колонку, что скрывается, что превращается в кнопку-меню. Обычно рисуют три кадра: около 375, 768 и 1280 пикселей.
- Ресурсы. Что отдаётся векторами (значки, логотип: SVG, чёткие на любом экране), а что растром (фотографии: WebP, AVIF или JPEG, в нескольких размерах для разных экранов), и в каких размерах.
- Настоящие тексты. Макет с «Lorem ipsum» скрывает проблемы: длинные заголовки, пустые поля. Русские подписи обычно длиннее английских.
- Заметки. Что происходит при нажатии, порядок фокуса, тексты для
alt.
Как макет становится кодом
Путей несколько, и все они опираются на токены.
- Вручную. Разработчик смотрит на макет и пишет вёрстку. Самый надёжный путь для маленького сайта.
- Через Dev Mode. Из макета берут код и размеры. С осторожностью: автоматический код любит абсолютные размеры, которых в хорошей вёрстке быть не должно. Вдобавок у Figma есть Code Connect, который связывает компонент макета с настоящим компонентом в коде, чтобы новые детали брали готовое.
- Через токены. Переменные Figma экспортируют в файл токенов (формат DTCG из предыдущего урока), а из него программа вроде Style Dictionary делает CSS. Тогда значения расходятся без ручной работы. Подробнее о файле токенов вы узнали в одиннадцатом уроке.
- С помощью ИИ. Figma предлагает сервер MCP, через который ИИ-агент получает структурированные сведения о макете, чтобы сделать по нему код. Вы встретитесь с такими инструментами в части про ИИ.
Об этом последнем пути стоит сказать честно: ИИ делает вёрстку по макету быстро, но ошибается так же, как человек. Типичные расхождения:
- вместо токена стоит число, скопированное из макета;
- забыто состояние (чаще всего фокус);
- нет версии для узкого экрана;
- цвета «почти те же», а не из переменных.
Поэтому задача, которую вы даёте ИИ, это та же спецификация передачи: чем она полнее, тем меньше правок. А результат всё равно проверяют: по токенам, по состояниям и на узком экране.
Пример из этого учебника
У самого учебника есть дизайн-система, и она устроена именно так. Каталог design/ репозитория содержит токены: они не написаны вручную, а сгенерированы из файла токенов в формате DTCG, который лежит в проекте NoeticEcho. Откуда они взяты и что изменено, записано в файле PROVENANCE.md (ссылка в источниках). Откройте design/tokens.css: вы увидите те же слои, что в прошлом уроке. Базовые значения вроде --ink-100 и --paper-100, смысловые --surface-canvas, --text-primary, --accent-command, и комментарии там, где дизайнер что-то решил: например, почему у цвета для текста отдельная, более светлая ступень, чем у цвета для заливки (потому что на тёмной панели исходный цвет не проходил контраст).
Это как раз то, что вы делаете в практике: решение записано в файле и в имени, а не в голове автора.
Проверьте себя: почему разработчик любит переменные, а не цвета из пипетки?
Переменная превращается в токен и меняется в одном месте; цвет, подобранный пипеткой, превращается в число, которое потом никто не найдёт.
Практика
Напишите спецификацию передачи первого экрана вашего проекта. Начните с содержимого: разделы и главное действие подставлены из вашего брифа. Потом кадры, слои, токены, состояния, ресурсы и узкий экран.
Последний раздел заполните после того, как по спецификации будет сделана вёрстка. Если ИИ-инструмента под рукой нет, возьмите любой код (в том числе свой из прошлых уроков) и найдите расхождения со спецификацией: числа вместо токенов, забытые состояния, отсутствие узкого экрана. Умение найти такие расхождения и есть навык, ради которого мы всё это пишем.
Что было не так с 2025 годом
В 2025 году ИИ-инструменты уже делали вёрстку по макету, но без дизайн-системы они брали значения «из картинки»: код получался похожим на макет, а от токенов расходился. Выигрывали команды, у которых макет и код говорили на одном языке токенов, и инструментам было что соблюдать.
Практика
Готовлю вашу страницу…
Тест
Вопрос 1 из 6
Карточки
Эти карточки попадут в повторение, когда вы завершите урок.
С чем сравнить автолейаут Figma?
Ответ
С display: flex: направление, промежуток (gap), отступы (padding), выравнивание. Hug, Fill и Fixed это ширина по содержимому, по контейнеру и числом.
Что такое переменные Figma?
Ответ
Именованные значения (цвета, числа), у которых бывают режимы: светлая и тёмная темы. Они могут стать дизайн-токенами и CSS-переменными.
Что значит «макет готов к передаче»?
Ответ
Слои названы, использованы компоненты и переменные, показаны все состояния и узкий экран, ресурсы подписаны (вектор или растр, размеры), тексты настоящие.
Что вектор, что растр?
Ответ
Значки и логотипы векторами (SVG): чёткие везде. Фото растром (WebP, AVIF, JPEG) в нескольких размерах для разных экранов.
Что проверять в коде, сделанном ИИ по макету?
Ответ
Числа вместо токенов, забытые состояния (особенно фокус), пропавший узкий экран, цвета, скопированные из макета и не взятые из токенов.
Источники
- Figma: свойства автолейаута только ссылка, по-английски
- Figma: переменные (Guide to variables) только ссылка, по-английски
- Figma: Dev Mode только ссылка, по-английски
- Penpot: гибкие раскладки только ссылка, по-английски
- Flexbox (MDN) CC BY-SA, по-английски
- Learn Images (web.dev) CC BY, по-английски
- Provenance of design/ в репозитории учебника: откуда взяты токены только ссылка, по-английски
Дальше
Теперь вы знаете: от макета к коду, передача макета разработчику.