Figma для розробників — як читати дизайн так, щоб менше боліло

Архівний матеріал: розбір публікації від 2022-08-15. Назви функцій, інтерфейс, можливості плагінів і умови доступу наведені в контексті того часу.

Стаття розбирає підхід Крістін Валлауер до того, як дизайнерська робота в Figma перетинається з розробкою. Нижче — стиснутий практичний конспект саме з фокусом на тому, що корисно знати розробникам.

Two hearts with a Figma logo and code inside.

1. Компоненти, варіанти і props — як це зіставити з кодом

Компоненти та варіанти в Figma

В Figma дизайнери збирають інтерфейс з компонентів — повторно використовуваних блоків, які можуть вкладатися один в один. Це дозволяє будувати бібліотеки в дусі atomic design: кнопка як атом, картка як молекула, форма як організм.

Варіанти — це набір станів одного компонента (primary/secondary, hover/pressed/disabled тощо), які зібрані в один «component set». У дизайнера всі ці стани лежать в одному місці і перемикаються через панель властивостей.

Figma дозволяє робити варіанти багатовимірними — наприклад, по осях type=primary/secondary, state=default/hover/pressed, size=sm/md/lg.

Figma variants with added several properties

Авторка звертає увагу на прийом: логічні властивості типу true/false або yes/no зручно використовувати як «тумблер» — наприклад, для перемикання light/dark мод. Такий підхід вона бачила в iOS 16 UI Kit для Figma від Joey Banks.

Joey Banks iOS UI Kit for Figma
Source: Joey Banks iOS UI Kit for Figma

Component properties (props)

З весни 2022 в Figma є властивості компонентів: текстові props, props для підміни вкладених інстансів і toggle props. В одному компоненті їх можна комбінувати, наближаючи його до API React/Vue компонента.

Локальні бібліотеки і зовнішні

Компоненти і стилі можуть жити в одному файлі або в окремих бібліотеках, які підключаються в різні проєкти як «single source of truth». Для розробника це фактично UI-kit, який має бути синхронізований з кодовим дизайн-системою.

External or local component libraries

Як розробнику використати це зі своєї сторони

1.1. Вирівняйте структуру і назви з кодом

Ключова можливість — зробити так, щоб структура імен компонентів в Figma збігалася з кодом. Для цього потрібна спільна сесія: показати дизайнерам, як влаштована (або має бути влаштована) компонентна система в коді, які є пропси, стани, модифікатори.

Screenshot of how to align UI and Code components in naming and structure

1.2. Додавайте посилання на код прямо в компоненти

Figma дозволяє в документації компонента додати опис і URL (наприклад, на GitHub або Storybook). У вкладці Inspect для інстанса з'явиться кнопка з цим посиланням, а пошук по компонентах враховуватиме текст опису. Це простий спосіб зв'язати дизайн і код без окремого порталу.

1.3. Вбудовуйте Figma в документацію

Посилання на frame або файл Figma (Cmd + L) можна лайв-embed-нути в Notion, GitHub Docs та інші інструменти. Дизайн вбудовується як «живий» артефакт і автоматично оновлюється.

1.4. Тестові бібліотеки і Storybook

Якщо однакові за назвою стилі та компоненти існують у двох бібліотеках, Figma дає змогу їх масово підмінити. Це зручно для тестових середовищ: перевірити нову тему або оновлені компоненти в макеті до того, як вони потраплять у «мастер».

Для більш щільної інтеграції авторка згадує плагін Storybook Connect, який зв'язує інстанси в Figma з компонентами в Storybook.

Storybook Connect

Важливе застереження від авторки: повна синхронізація Figma з кодом вимагає часу і постійної підтримки. Має сенс робити це для масштабних дизайн-систем, а не для разового лендингу.

2. Стилі і токени — чому Figma «не дуже розумна» сама по собі

Що таке стилі в Figma

Дизайнери створюють окремі стилі для кольорів, тексту, сіток і ефектів (тінь, blur) і перевикористовують їх у макеті. На цьому «магія» закінчується — немає автоматичної документації, немає пов'язаних системних масштабів типу «базова гарнітура + модуль кроку».

Ще один нюанс — немає стилів для відступів. Спейсинг-система існує тільки як домовленість і ручні відстані.

Documentation of styles

Що просить розробник — токени

Окремо згадується плагін Figma Tokens. Через нього можна:

  • описувати дизайн-токени (кольори, типографіку, спейсинг) прямо в Figma
  • вирівнювати ці токени з токенами в коді

Документація плагіна: https://docs.figmatokens.com/, відео творця Jan Six: https://www.youtube.com/watch?v=zkLfw6Jb6WM.

Figma Tokens plugin

3. Як Figma моделює responsive — auto layout, constraints, grid

Авторка докладно розбирає інструменти, якими дизайнери наближаються до responsive-поведінки:

  • Auto layout — приблизний аналог flexbox
  • Constraints — прив'язка елементів до сторін контейнера
  • Grid — колоночні сітки на фреймах

Tools in Figma for responsive design

Важливо для розробника: в Figma немає справжніх breakpoint-ів. Вона не може автоматично проганяти макет через «320/768/1024px» як браузер.

Auto layout і його обмеження

Auto layout задає відступи між елементами, padding контейнера, вирівнювання, resize-режим («hug content», fixed, «fill container»), дає можливість вкладати один auto layout в інший і автоматично підлаштовуватися під контент.

Головне обмеження, важливе розробнику: дизайнер не може задавати пропорційний розподіл типу «60% / 40%» між елементами всередині одного auto layout — Figma схильна рівномірно ділити простір. Щоб емулювати 60/40, один елемент фіксують, а другий розтягують.

Constraints, grid і їх комбінування

Constraints фіксують елемент щодо батьківського фрейма при його ресайзі — наприклад, «stick to left + top» або «center». На відміну від auto layout, constraints не враховують зміну контенту елемента, тільки зміну розміру фрейма.

На фрейм можна накинути grid: задати кількість колонок, gutter, відступи і поведінку при ресайзі. Цікава деталь: коли активна сітка, constraints «орієнтуються» по колонках як по системі координат, тому дизайнери можуть імітувати responsive, комбінуючи grid + constraints.

Grids

Але як тільки контент ускладнюється, вилазить обмеження, про яке прямо говорить авторка: margin і padding при ресайзі не адаптуються так, як це сталося б у CSS.

Margins and padding do not adapt when resizing if you add more content

Повністю auto layout сторінки

Один з підходів дизайнерів — будувати цілі сторінки тільки через auto layout, інколи імітуючи grid (gutter як «space between»), інколи взагалі без строгої сітки. Це ще один сигнал для розробника: те, як щось зроблено в Figma, не означає, що в коді обов'язково має бути flexbox — можна обрати більш доречну техніку (CSS Grid, комбінації, clamp () тощо).

4. Breakpoints в Figma — тільки «вручну»

Figma не має вбудованого механізму «осіяти дизайн по брейкпоінтах». Тому дизайнер, який хоче чесно протестувати адаптивність, створює окремі фрейми для кожного breakpoint-діапазону (наприклад, XS, S, M, L) і розкладає авто-лейаут компоненти всередині.

Visualization of no breakpoints in Figma
Visualization of how to create our own breakpoints by hand

Для responsive grid підхід той самий: на різні розміри екрана задаються стилі сітки і зберігаються як grid styles. При тестуванні потрібного брейкпоінта дизайнер підключає відповідний стиль.

A responsive grid

Типографіка і fluid-ефекти

Автоматичної responsive-типографіки в Figma немає. Масштаб шрифтів під різні брейкпоінти дизайнер змінює вручну, перемикаючи text styles.

Visualization of how to set up responsive typography

Якщо в коді використовуються vw, clamp(), calc() та інші fluid-прийоми, їх авторка рекомендує тестувати вже в браузері — Figma не симулює таку поведінку, максимум дає «зріз» на вибраному розмірі.

Є окремі плагіни на кшталт Breakpoints plugin, які дозволяють більш наочно проганяти створені вручну стани, але чуда автоматичного CSS там немає — це візуалізація того, що дизайнер уже розклав.

5. Реальні дані замість lorem ipsum

Figma не підключається до БД безпосередньо, але підтримує робочі сценарії через плагіни:

Дизайнер називає текстові шари #columnname, запускає плагін, вказує посилання на таблицю — і контент підтягується в макет. Авторка окремо відзначає, що в такому режимі можна динамічно міняти й варіанти компонентів.

Google sheet with real data
Google sheet with real data.
Deisgn chairs vs real chairs

Практичний ефект для розробника: якщо дизайнер тестує стани «мало контенту/багато контенту/порожньо/помилка/завантаження» на реальних значеннях, стає помітно, де макет розсипається і куди варто закладати додаткові обмеження в UI і API.

6. Soft grid vs hard grid — як пояснити спейсинг системи

Коли дизайнер вмикає Grids, Figma додає фонову піксельну сітку. Інтуїтивно хочеться використовувати її як «жорстку» (hard) grid для відступів. Але в верстці спейсинг зазвичай задається як набір кроків (4/8/12/16 тощо), а не «прив'язкою піксель в піксель».

8pt Grid

Figma не дає окремих «spacing blocks». Максимум — змінити крок «nudge» (через Cmd + / → nudge) і рухати елементи стрілками по 8 px із затиснутим Alt, щоб бачити відстані.

soft grid vs. hard grid

Тут знову виручає Figma Tokens: реальну спейсинг-систему з кодових токенів можна підтягнути в Figma і використовувати в компонентах, щоб не роз'їхатися між макетом і CSS.

7. Line-height і чому дизайнери «ламають» його до 1

Багато UI-дизайнерів приходять з графічного дизайну, де працюють з baseline, а не з line-height як у Figma/CSS. Це породжує питання на кшталт «як прибрати порожній простір над і під текстом». Частина вирішує це, виставляючи line-height в 1, що виглядає дивно в коді.

Visualization of how to set line height in Figma

Авторка звертає увагу на такі деталі Figma:

  • за замовчуванням line-height вказується в px
  • можна ввести значення у %, де 150% ≈ line-height: 1.5 у CSS
  • точне px-значення видно в Inspect табі

З погляду розробника має сенс проговорювати з дизайнерами, що line-height повинен залишатися «живим» — текст не завжди буде в один рядок, будуть переклади, змінна довжина, а число стилів бажано обмежувати. Нормальне лінійне інтерліньяж — це плюс до читабельності, а не «зайвий повітря».

Line-height-1 vs line-hight-1.5

8. Чому в макеті всюди px — і чому це не вимога до коду

Figma працює тільки в px (власна «1px = 1pt»), без rem/em. Тому та сама розмірність з'являється у всіх числах, які бачить розробник. Авторка окремо підкреслює: наявність px в інспекті не означає, що дизайнер очікує «захардкоджених» px в CSS — це просто обмеження інструмента.

px and all the other ways like rem and em are crossed out

9. Прототипи без окремих інструментів

Figma дозволяє збирати інтерактивні прототипи прямо з тих самих фреймів, що й основний дизайн: лінкувати екрани, робити overlay, анімації між варіантами одного компонента, структурувати окремі потоки (flows).

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

10. View only — що розробник реально може робити в Figma

Часто розробник отримує запрошення з правами View only. Авторка показує на прикладі демо файлу, що навіть у такому режимі ви не обмежені простим «подивитися картинку».

view only mode

10.1. Структура файлів і сторінок

Окрім frame-ів на canvas, є «Pages» над панеллю шарів. Різні команди використовують їх по-різному: під версії, спринти, окремі розділи «Components», «Design», «Testing». Варто не ігнорувати цей рівень — там часто лежать бібліотеки компонентів і документація.

Visualization of pages and the layer menu on the canvas

10.2. Inspect — ваш головний інструмент

У View only файл відкривається з активною вкладкою Inspect. Клік по елементу показує:

  • відстані до сусідніх елементів
  • специфікацію стилів справа (колір, шрифт, радіус, layout-параметри)
  • кодове представлення у форматах CSS, iOS, Android (перемикання вкладок)

inspect menu
 CSS, iOS, and Android options on the menu

Якщо на головному компоненті задано посилання на кодову документацію або GitHub, воно теж з'явиться в Inspect.

the link to Github and some comments in inspect mode
Visualization of the inspect mode with the link to Github added to the design tab’s component documentation

10.3. Огляд стилів

Клік по «порожньому» полотну показує список локальних стилів файлу. Частина з них може приїжджати з зовнішніх бібліотек, тому для повної картини потрібна окрема документація від дизайн-команди — Figma не згенерує її автоматично.

Styles overview
a general overview of all styles including internal and external styles

10.4. Перехід до головного компонента

У будь-якого інстанса на canvas є маленька «діамантова» іконка — клік по ній переносить до main component і його документації. Там зазвичай лежить еталонні розміри, всі варіанти, текстові описи.

A diamond-shaped symbol with a sign 'jump to the main component'
Figma UI component library

10.5. Експорт ассетів і коментарі

Навіть у View only можна експортувати елементи в JPG/PNG/SVG і задати масштаб або конкретну ширину/висоту. Авторка дає прийом: замість 2x/3x вказати, наприклад, 300w або 200h, і Figma збереже пропорції.

Different formats (JPG, PNG, SVG) of how assets can be exported

Коментарі в дизайні працюють як обговорення безпосередньо «на макеті» — зручно ставити питання до конкретних елементів.

Visualization of a comments window

10.6. Перегляд прототипу

Кнопка Play у правому верхньому куті переводить у режим презентації прототипу. Якщо дизайнер налаштував flows, можна отримати окремі посилання на різні гілки сценаріїв (курс реєстрації, кошик, онбординг тощо) і прив'язати їх до задач у трекері або планування в інших інструментах.

the play button at the corner of a design file and Prototype on the right
Individual links for different design and testing stages

У підсумку описаний авторкою набір прийомів дає розробнику два ключові інструменти: розуміння реальних можливостей/обмежень Figma (щоб не вимагати від макета того, чого в ньому не може бути) і конкретні точки інтеграції з кодом (токени, Storybook, посилання з компонентів, View only + Inspect).


Джерело: Christine Vallaure – Smashing Magazine. Дата оригіналу: 2022-08-15.

Пошук

Закрити