Меню
Поиск

Дизайн-системы · Токены и темы

Как вынести цвета и отступы в переменные и перестать вписывать числа руками

Синий, вписанный в сорок слоёв, — это сорок правок, когда бренд сменит цвет. В уроке — что даёт переменная, как устроены переменные в Figma и чем они отличаются от стилей, как назвать переменную, чтобы имя пережило смену значения, когда переменная не нужна и как найти значения, вписанные руками. Для практики — приложение «Лесной обжарки»: смена акцента одним значением, тренажёр «переменная или число» и поиск чисел руками.

Пример для всего урока. «Лесная обжарка» — магазин кофе с приложением из урока «Компоненты и варианты». Магазин решил сменить фирменный синий на зелёный. В этом уроке вы увидите, сколько стоит такая смена без переменных и с ними. Как собрать сами цвета в палитру с ролями, разобрано в уроке «Цвет и контраст», Junior.

1Число руками и переменная

Цвет, вписанный в слой кодом, придётся менять в каждом слое. Переменная меняется в одном месте.

В приложении «Лесной обжарки» синий стоит на кнопках, ссылках, выбранных чипах и в нижнем меню.

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

С отступами так же. Отступ 16 внутри карточки вписан в каждую карточку отдельно.

Попробуйте сами. Почти весь экран ниже привязан к переменным, но две вещи — нет.

Каталог · смените значение переменной
Каталог ЗёрнаМолотыйБез кофеина Кения ААСветлая обжарка · 990 ₽В корзину Эфиопия ИргачеффСветлая обжарка · 1 090 ₽В корзину Колумбия СупремоСредняя обжарка · 890 ₽В корзину Все сорта КаталогИзбранноеКорзина
Кнопка у Эфиопии остаётся синей, а отступы в карточке Колумбии не меняются: в эти слои значение вписано руками.

Что даёт переменная

  • Правка в одном месте. Новое значение ставят в переменную, и оно появляется везде, где она привязана.
  • Одно значение вместо «почти такого же». На всех кнопках один синий, а не пять оттенков, подобранных на глаз.
  • Общее имя с кодом. В режиме разработчика (Dev Mode, он есть на платных тарифах) Figma показывает в коде имя переменной рядом со значением. Разработчик берёт то же имя.

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

Повторяющееся значение — в переменную. Тогда смена цвета или отступа во всём макете — одна правка.

2Переменные в Figma

Переменная — это имя и значение. Слою дают имя, а значение хранится в одном месте.

Переменные лежат в коллекциях. Коллекция — это набор, например все цвета и отступы приложения.

Открываются они вкладкой Variables в левой панели Figma.

Типы переменных

  • Цвет — сплошной цвет для заливки, обводки, текста и тени.
  • Число — для отступов и промежутков автораскладки, радиуса углов, ширины и высоты, кегля и интерлиньяжа.
  • Строка — для текста в слое и названия шрифта.
  • Логическое — чтобы показать или скрыть слой.

Ещё два типа, timing и easing, нужны для анимации. На этой ступени хватит первых двух: цветов и чисел.

Коллекция «Лесная обжарка» · переменные
ИмяЗначение
color
color/accent1D5FD1
color/text1B1F24
color/text-muted5B6570
color/surfaceF4F6F8
color/borderC9D0D6
space
space/s8
space/m16
space/l24
radius
radius/m8
Косая черта в имени собирает переменные в группы: color, space, radius. В панели Figma группы видны списком слева.

Как привязать

  • Число. Щёлкните в поле свойства, например в отступ или радиус, и нажмите «=». Откроется список переменных.
  • Цвет. Нажмите на образец заливки и откройте вкладку Libraries или нажмите значок Apply styles and variables в разделе Fill. Переменные там в квадратных образцах, стили — в круглых.

Теперь значение приходит из переменной. Поменяете переменную — поменяется и слой.

Отвязать переменную у цвета можно значком Detach variable, у числа — стерев значение в поле.

Одно исключение: если тянуть отступ или промежуток автораскладки ручками прямо на холсте, привязка слетает сама.

Стиль или переменная

У Figma есть и стили. Они не исчезли с появлением переменных.

  • Переменная хранит одно значение: один цвет, одно число.
  • Стиль хранит набор. Текстовый стиль — это сразу шрифт, кегль и интерлиньяж. Цветовой стиль может держать градиент или несколько заливок.

Поэтому стили текста остаются стилями. А кегль внутри стиля можно взять из числовой переменной.

Как собрать шкалу отступов, разобрано в уроке «Композиция и сетка», Junior. Шкалу кеглей — в уроке «Типографика», Junior. Здесь — как эти шкалы хранить.

Слой берёт значение из переменной, а не держит своё число. Вписанное руками число не узнает, что переменную поменяли.

3Имя, которое переживёт смену значения

Значение переменной меняется, имя остаётся. Поэтому имя говорит, зачем это значение, а не какое оно.

Сравните:

  • «blue» → «color/accent»
  • «gray-dark» → «color/text»
  • «padding-16» → «space/m»
  • «catalog-card-padding» → «space/m»

Посмотрите, что стало с именами после того, как магазин сменил синий на зелёный, а отступ в карточках — с 16 на 24.

Переменные после смены цвета и отступа

Имена по значению

ИмяЗначение
blue2E7D4F
padding-1624
Имена врутПеременная «blue» теперь зелёная, а «padding-16» равна 24. Новый дизайнер возьмёт «blue» для синей иконки и получит зелёную. Переименовать нельзя без риска: на эти имена уже ссылаются в коде.

Имена по назначению

ИмяЗначение
color/accent2E7D4F
space/m24
Имена остались правдойАкцент остался акцентом, хотя стал зелёным. Средний отступ — средним, хотя стал больше. Ни одно имя менять не пришлось.
Значения в обоих вариантах одинаковые. Разница только в том, что говорят имена.

Как называть

По назначению, а не по виду. Акцент, текст, фон, граница. Через год акцент может стать зелёным, а «blue» так и останется синим только по имени.

Не по месту. «catalog-card-padding» завтра понадобится в корзине, и имя начнёт путать.

Одними словами во всём файле. Если у одной переменной «text», у соседней не «font-color».

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

В справке Figma вы встретите и имена по цвету: gray/400, brand/watermelon. Так называют палитру-основу, к которой слои напрямую не привязывают. Как устроены эти два слоя, разобрано на следующей ступени.

Номер ступени — тоже имя

Отступы в больших системах часто называют номером ступени шкалы.

Например:

У Atlassian space.100 — это 8 пикселей, а space.200 — 16.

Номер ступени — не число пикселей. Значение ступени можно поменять, а порядок останется прежним.

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

Имя говорит, зачем значение, а не какое оно. По назначению, а не по цвету. Не по месту. Одними словами во всём файле.

4Когда переменная не нужна

Переменная нужна тому, что повторяется. Разовое значение можно оставить числом.

Каждая переменная — ещё одна строка в наборе. Кто-то должен понимать, что она значит и где её можно брать.

Если в наборе есть «color/autumn-banner» для одного баннера, через полгода никто не вспомнит, можно ли взять её для кнопки.

Проверьте себя

Нужна ли переменная этим значениям из приложения «Лесной обжарки»?

Тренажёр · переменная или число
  1. Синий кнопок, ссылок и выбранных чипов.

  2. Оранжевый баннера «Осенняя обжарка». Баннер висит до конца ноября.

  3. Отступ внутри карточки сорта: 16 со всех сторон.

  4. Радиус углов у кнопок, полей и чипов.

  5. Ширина схемы проезда на странице «Контакты».

  6. Цвет основного текста.

  7. Наклон наклейки «Новинка» на одном баннере — 12 градусов.

  8. Промежуток между карточками в списке сортов.

Выбор решает один вопрос: меняется ли это значение вместе с другими местами макета.
Переменная — для того, что повторяется и меняется вместе. Разовое значение остаётся числом.

5Найдите числа, вписанные руками

Экран каталога, у каждого элемента — метка, откуда его значение. Четыре значения вписаны руками там, где нужна переменная.

Имя переменной в метке — значение взято из набора. Код цвета или число — повод присмотреться.

Нажимайте на элементы, которые, по-вашему, надо привязать к переменной. Нормальные элементы тоже можно нажать.

Каталог · найдите числа руками
Каталог Найти сортcolor/border Зёрнаcolor/accent Молотыйрадиус 6 Осенняя обжаркаТри новых сорта до конца ноября9A3412 картинка Кения ААСветлая обжарка · 990 ₽space/m Эфиопия ИргачеффСветлая обжарка · 1 090 ₽5C6670 В корзину1E60D0 Колумбия СупремоСредняя обжарка · 890 ₽отступ 13
  1. Поле поиска.Всё в порядке. Рамка привязана к переменной color/border.
  2. Чип «Зёрна».Всё в порядке. Заливка выбранного чипа — color/accent.
  3. Чип «Молотый».Руками. Радиус 6, а в наборе radius/m — 8. Соседние чипы скруглены сильнее, хотя глазом это почти не видно. Привязать к radius/m.
  4. Баннер «Осенняя обжарка».Можно оставить. Цвет вписан руками, но баннер разовый и уйдёт в декабре. Переменная для него не нужна.
  5. Фото сорта.Всё в порядке. Это картинка, а не цвет и не число. Переменная ей не нужна.
  6. Карточка Кении.Всё в порядке. Отступ внутри — space/m.
  7. Подпись у Эфиопии.Руками. Код 5C6670, а в наборе color/text-muted — 5B6570. Разница в одну единицу: кто-то подобрал серый пипеткой. Привязать к color/text-muted.
  8. Кнопка «В корзину» у Эфиопии.Руками. Почти акцент, но не он: 1E60D0 вместо 1D5FD1. При смене синего на зелёный эта кнопка останется синей.
  9. Карточка Колумбии.Руками. Отступ 13 — такой ступени в шкале нет. Карточка выглядит чуть теснее соседних. Привязать к space/m.

Все четыре найдены. Радиус 6 вместо 8, серый с разницей в одну единицу, синий «почти как акцент» и отступ 13. Глазом их не отличить, поэтому значения и держат в переменных.

Нормальные элементы тоже можно нажать: вы прочитаете, почему там всё в порядке, а счётчик «Найдено» не изменится.

Как найти такие значения в своём макете

  • Откройте Selection colors. Выделите экран: в правой панели Figma покажет его цвета, отдельно переменные, стили и обычные заливки. Обычная заливка в этом списке — цвет без переменной. Значок мишени рядом выделит все слои с этим цветом.
  • Сравните со шкалой. Отступ 13 при шкале 4, 8, 12, 16 — опечатка, а не решение.
  • Запустите Check designs, если у команды тариф Organization или Enterprise. Проверка находит вписанные цвета, радиусы и отступы и предлагает переменную на замену.
«Почти такое же» значение — ошибка, а не вариант. Его не видно глазом, и смена переменной до него не дойдёт.

6Задание

Возьмите свой макет, вынесите цвета и отступы в переменные и проверьте, что вписанных руками значений не осталось.

Часть 1 · Выписать, 15 минут

  1. Выделите два-три экрана и откройте Selection colors. Выпишите все цвета. Если своего проекта нет, возьмите экран каталога из поиска выше.
  2. Выпишите отступы и радиусы. Пройдитесь по автораскладкам: промежутки и отступы внутри.
  3. Сведите почти одинаковые. 1D5FD1 и 1E60D0 — один цвет. 13 и 12 — одна ступень.
  4. Отметьте разовое. Его оставите числом.
Переменные макета · что завести
ПРОЕКТ: ______________________        Дата: __.__.____

ЦВЕТА
имя переменной      | значение | где стоит
color/accent        | #______  | ______________________
color/text          | #______  | ______________________
color/______        | #______  | ______________________

ОТСТУПЫ И РАДИУСЫ
space/s             | ____     | ______________________
space/m             | ____     | ______________________
radius/______       | ____     | ______________________

СВЕДЕНО (почти одинаковые → одно значение)
______ и ______ → ______

РАЗОВОЕ (оставляю числом)
______________________ — почему: ______________________

ПРОВЕРКА
акцент сменили в одном месте — поменялся везде: да / нет
вписанных руками значений осталось: ____
Строка «Сведено» показывает, сколько оттенков и отступов на самом деле были одним значением.

Часть 2 · Завести и привязать, 40 минут

  1. Откройте вкладку Variables в левой панели, создайте коллекцию и заведите переменные из шаблона: цвета и числа.
  2. Назовите по назначению: color/accent, space/m, radius/m.
  3. Привяжите каждую заливку, обводку, отступ и радиус. Начните с главных компонентов: экземпляры получат привязку сами.

Часть 3 · Проверить, 15 минут

  1. Смените значение color/accent на любой другой цвет и пройдите по экранам. Всё поменялось?
  2. Снова откройте Selection colors. Остались коды цветов без переменной — привяжите или запишите в разовое.
  3. Верните цвет и заполните строку «Проверка».
Как понять, что задание выполнено. Смена акцентного цвета всего макета — правка одного значения.

Что должно получиться

  • Коллекция переменных с цветами, отступами и радиусами.
  • Макет без вписанных значений, кроме разовых.
  • Заполненный шаблон выше.

План работы: 15 минут выписать, 40 — завести и привязать, 15 — проверить. Около часа с небольшим.

Частые сложности

  • «Почти одинаковых синих — восемь». Выберите тот, что стоит на главной кнопке, или спросите разработчика, какой синий в коде. Остальные привяжите к нему.
  • «Переменных больше, чем цветов в макете». Проверьте, не завели ли вы переменные на разовые значения.
  • «Компонент со своими числами внутри». Привязывайте в главном компоненте, а не в экземплярах. Как устроены компоненты, разобрано в уроке «Компоненты и варианты», Junior.
  • «Отступ отвязался сам». Если тянуть отступ автораскладки ручками прямо на холсте, Figma отвязывает переменную. Меняйте значение в поле или в самой переменной.
  • «Не знаю, как назвать». Ответьте, зачем это значение: фон, текст, акцент, отступ внутри. Ответ и есть имя.

7Чек-лист и ошибки

Переменные работают, если

  • Цвета, отступы и радиусы, которые повторяются, лежат в переменных
  • В полях свойств имена переменных, а не числа и коды цветов
  • Почти одинаковые значения сведены к одному
  • Имена говорят о назначении: color/accent, а не blue
  • Разовые значения остались числами, набор не засорён
  • Смена акцента во всём макете — одна правка

Что мешает

  • Код цвета в слое. Смена переменной до него не дойдёт.
  • «Почти такой же» цвет. Глазом не отличить, а при смене палитры он останется старым.
  • Имя по цвету. «blue», который стал зелёным.
  • Имя по месту. «catalog-card-padding» в корзине.
  • Переменная на один баннер. Строка в наборе, которую никто не понимает.

8Три ступени темы

В этом уроке учимся выносить повторяющиеся значения в переменные. На следующих ступенях — называть токены по ролям и собирать темы, а потом держать токены одинаковыми в макете и в коде.

СтупеньЧто нужно уметьКак проверить результат
Junior — этот урок Заводить переменные для цветов и отступов; привязывать к ним слои; называть по назначению; находить значения, вписанные руками; не заводить переменную на разовое Смена акцентного цвета всего макета — правка одного значения
Middle Разделять примитивы и токены с ролями; строить имя токена по роли и состоянию; собирать вторую тему из тех же ролей; проверять, что при смене темы ничего не осталось прибитым Переключение темы не требует ни одной ручной правки в макете
Senior Держать одинаковыми имена и значения токенов в макете и в коде; выбрать способ передачи; регулярно сверять расхождения; записать порядок добавления нового токена Новый токен проходит путь от документа до кода без ручного вмешательства
Ориентир по этой теме: про любой цвет и отступ в своём макете вы можете сказать, из какой он переменной, и что поменяется, если эту переменную поправить.

Что почитать дальше

  • Подробный разбор переменных Figma Variablesuxrdsgn.ru, Евгений Шевцов, 2025 · на русском · бесплатноРазбор по шагам на русском: коллекции, группы через косую черту, квадратные и круглые образцы, палитра с именами по назначению. Текст 2025 года: типов четыре, а не шесть, режимов на платном тарифе «до 4», панель переменных теперь открывается слева. Логическую переменную автор привязывает к экземпляру, к цветам это не относится.
  • Overview of variables, collections, and modesFigma · справка на английском · бесплатноСправка Figma на английском: шесть типов переменных и к каким свойствам привязывается каждый, коллекции и группы, чем стиль отличается от переменной. На схеме палитра-основа названа по цвету (gray/400, watermelon), а слои берут цвет из токенов по назначению. Это тема следующей ступени.
  • Create and manage variables and collectionsFigma · справка на английском · бесплатноСправка Figma на английском к заданию: где теперь открывается панель переменных (вкладка Variables слева), как завести коллекцию, переменную и группу, как ограничить свойства, к которым переменную можно привязать. В примерах токены названы по назначению (surface/primary) и по ступени (spacing/2).
  • Apply variables to designsFigma · справка на английском · бесплатноСправка Figma на английском: как привязать переменную к заливке, отступу, радиусу, тексту и видимости слоя и как её отвязать. Пригодится к заданию. Там же заметка: если тянуть отступ автораскладки ручками на холсте, привязка слетает. Это та самая «сложность» из урока.
  • Почему стили в Figma — прошлый векХабр, Игорь Бутков (Friflex), 2025 · на русском · бесплатноКак называть токены: кнопка button.purple, ставшая розовой, и шкала 100–200–300 против S–M–L. Автор разрешает имена по цвету и числу в «стабильном» проекте, урок так не советует: значение меняется и там. Заголовок про стили устарел, в стили теперь можно подставлять переменные.