Идея нового инструмента в Figma

Интерактивный прототип и иллюстрированное описание инструмента Breakpoints, который можно было бы воплотить в Figma.

Идея нового инструмента в Figma

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

Предисловие

Работая в фигме над большим проектом, мне в голову начали приходить идеи потенциальных функций и инструментов которые можно было бы добавить в фигму.

И одной из таких идей был инструмент Breakpoints.
Согласитесь, было бы неплохо если бы в фигме можно было создавать не просто резиновый дизайн а адаптивный! Чтобы изменяя ширину страницы дизайн адаптировался под новые размеры.

Так мы могли бы более тщательно протестировать все адаптации еще на этапе дизайна, а верстальщику было бы удобней видеть в реальном времени как изменяется тот или иной элемент дизайна в зависимости от ширины сайта. Да и клиенты могли бы сразу видеть как будет выглядеть их сайт не зависимо с какого устройства они открыли вашу ссылку.

Что такое брейкпоинты?

Брейкпоинты это контрольные точки проходя через которые дизайн сайта изменяется и адаптируется под новые условия.

Схема работы брейкпоинтов
Схема работы брейкпоинтов

У нас есть три дизайна страницы сайта:
Дизайн №1 - отображается на экранах от 400 px до 500 px по ширине.
Дизайн №2 - отображается на экранах от 500 px до 800 px по ширине.
Дизайн №3 - отображается на экранах от 800 px до 1000 px по ширине.

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

Брейкпоинты в других программах

Когда мне это пришло в голову, я подумал что неплохо было бы продумать как это будет работать и всем об этом рассказать.
Но погуглив пару минут понял что я далеко не первый кому в голову пришла эта идея. Даже больше, подобный функционал уже осуществили в других программах, а значит это возможно осуществить и в фигме.
Вот пример брейкпоинтов в Adobe Muse, а вот как работают брейпоинты в WebFlow.

Как это будет выглядеть в итоге?

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

На видео видно как при изменении ширины сайта, дизайн страницы адаптируется под новые размеры.
Подробнее об интерфейсе и принципе работы инструмента будет описано далее.

Независимо от настоящего значения слова “брейкпоинт” в статье я буду ему придавать немного другое значение (не спрашивайте почему).
В статье я называю брейкпоинтом пакет фреймов разного размера. Хотя правильно было бы называть брейкпоинтами сами фреймы.

Принцип работы нового инструмента и его интерфейс

На картинке ниже вы видите как выглядит проект с одним созданным брейкпоинтом “Homepage” в который мы добавили три фрейма “Homepage 960”, “Homepage 740”, “Homepage 480”.
Слева панель “Breakpoints” со списком брейкпоинтов и фреймов которые они содержат.
А в центре на холсте отображаются фреймы добавленные в тот или иной брейкпоинт.

Идея нового инструмента в Figma

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

Давайте представим что мы уже нарисовали дизайн главной страницы сайта в трех размерах 960px, 740px, 480px и для удобства поместили каждый размер на отдельную страницу (Pages) на панели слои.
С этого и начнем:

P.S. естественно при реальной работе с брейкпоинтами нам не придется так долго настраивать параметр “breakpoint width” у каждого фрейма, достаточно лишь раз создать стиль настроек, выбрать все фреймы к которым мы хотим добавить этот стиль и применить его.
В прототипе я специально показал работу инструмента максимально подробно.

Подробное описание элементов интерфейса

Идея нового инструмента в Figma

1 Вкладка “Брейкпоинты”

Новая вкладка при нажатии на которую открывается панель с брейкпоинтами. По аналогии с панелью “слои”.

Идея нового инструмента в Figma

2 “Добавить брейкпоинт”

Нажимая на “+” мы создаем брейкпоинт (в примере “Homepage”) в который мы будем добавлять фреймы разного размера.
Структура панели “брейкпоинты” аналогична панели “Слои”.
Сначала мы создаем страницы/брейкпоинты, а потом выбрав нужную страницу/брейкпоинт создаем в ней фреймы.
В случае со вкладкой “брейкпоинты” мы фрейм не создаем а добавляем уже ранее созданный из панели “слои”.

Идея нового инструмента в Figma

3 “Свернуть брейкпоинты”

При нажатии на стрелку, список брейкпоинтов скрывается по аналогии со списком страниц на панели “слои”.
На левой картинке список брейкпоинтов развернут а на правой свернут.
В данном случае у нас только один брейкпоинт “Homepage”.

Идея нового инструмента в Figma

4 “Брейкпоинт”

Тут отображается список брейкпоинтов которые мы создали.
В данном случае у нас только один брейкпоинт “Homepage”.

Идея нового инструмента в Figma

5 “Добавить фрейм”

Нажимая на “+” открывается панель “слои” для выбора фрейма или нескольких фреймов которые нужно добавить в брейкпоинт.

Идея нового инструмента в Figma

6 “Фреймы”

Фреймы которые мы добавили в брейкпоинт “Homepage”.
Во вкладке “брейкпоинты” так же как и во вкладке “слои” можно раскрыть фрейм для просмотра содержимых слоев и для работы с ними.
Благодаря этому дизайнер может переходить во вкладку “брейкпоинты” и работать с отдельной страницей сайта всех размеров на одном холсте не отвлекаясь на другие страницы сайта, при этом не нарушая структуру расположения фреймов на панели “слои”.

Идея нового инструмента в Figma

7 “Иконка фрейма”

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

Идея нового инструмента в Figma

8 “Название брейкпоинта”

При создании брейкпоинта, автоматически присваивается имя: “breakpoint 1”, “breakpoint 2”, “breakpoint 3” и тд.
Брейкпоинт можно переименовать дважды кликнув по его имени.

Идея нового инструмента в Figma

9 “Убрать фрейм из брейкпоинта”

Чтобы убрать фрейм из брейкпоинта достаточно нажать на фрейм правой кнопкой мыши и выбрать “Remove frame”.

Брейкпоинты на панели инструментов

Вверху на панели инструментов есть иконка “брейкпоинты” по нажатию на которую выпадает список созданных брейкпоинтов и кнопка создания брейкпоинтов.
Далее подробнее:

Идея нового инструмента в Figma

10 “Создать брейкпоинт”

Создать брейкпоинт можно не заходя в панель“брейкпоинты”.
При нажатии на “New Breakpoint” создается новый брейкпоинт с присвоенным по умолчанию именем.

Идея нового инструмента в Figma

11 “Переименование брейкпоинта”

Чтобы переименовать брейкпоинт, нужно нажать на иконку которая появляется при наведении на брейкпоинт и ввести новое имя.

Идея нового инструмента в Figma

12 “Добавление фреймов в брейкпоинт”

Добавлять фреймы в брейкпоинт так же можно не заходя во вкладку “брейкпоинты”.
Находясь на панели “слои” можно выбрать нужный фрейм, открыть данное всплывающее окно на панели инструментов и выбрать брейкпоинт в который вы хотите добавить фрейм.
Слева показан брейкпоинт “Homepage” в который мы хотим добавить фрейм, а справа уже показано что фрейм добавлен в брейкпоинт.

Подробнее о настройках фреймов

Давайте подробнее рассмотрим как настраиваются фреймы которые мы будем добавлять в брейкпоинт.
Выбрав нужный фрейм, на правой панели мы можем добавить ему новый параметр “breakpoint width”.

Идея нового инструмента в Figma

13 “Создать настройку”

Нажимая на “+” создается настройка фрейма.

Идея нового инструмента в Figma

14 “Минимальная ширина”

Минимальная ширина до которой будет сжиматься фрейм.

Идея нового инструмента в Figma

15 “Максимальная ширина”

Максимальная ширина до которой будет растягиваться фрейм.

Идея нового инструмента в Figma

16 “Иконка фрейма”

Иконка которая будет отображаться рядом с названием фрейма на панели “Breakpoints”.

Идея нового инструмента в Figma

17 “Добавить стиль”

При нажатии на кнопку “Добавить стиль” открывается окно в котором можно выбрать ранее созданный стиль настроек.

Идея нового инструмента в Figma

18 “Редактировать стиль”

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

Как влияют настройки фрейма

Давайте разберем примеры чтоб понимать за что отвечает каждая настройка параметра “breakpoint width”.
Картинка состоит из двух частей:
Слева - настройки фрейма.
Справа - за что отвечают настройки в режиме просмотра.
Оранжевым я показал рабочую ширину фрейма. Это та ширина которую мы задаём при создании фрейма.

Фрейм "Homepage 480"
Фрейм "Homepage 480"
Фрейм "Homepage 740"
Фрейм "Homepage 740"
Фрейм "Homepage 960"
Фрейм "Homepage 960"

Режим просмотра и подробное описание его интерфейса

Так выглядит режим просмотра, вы его уже видели в начале статьи в видео.
В новом режиме просмотра внизу появилась размерная шкала на которой отмечены границы фреймов и другие элементы управления о которых мы поговорим далее.
Так же я переместил кнопку “Restart” и кнопки переключения слайдов в углы.

Идея нового инструмента в Figma

Давайте разберем подробнее что нового в интерфейсе режима просмотра:

Идея нового инструмента в Figma

1,2,3 Магнит

Функция магнит работает почти по тому же принципу как и направляющие в фигме или фотошопе, когда мы перемещаем направляющую то она как бы магнитится к границам фреймов и объектов.
Когда мы перемещаем бегунок достаточно близко к минимальной, максимальной или рабочей ширине фреймов то он к ним магнитится.

Функция имеет три режима:
1) Выключено — можно свободно уменьшать и увеличивать ширину дизайна, бегунок не будет магнититься.
2) Включено — можно свободно уменьшать и увеличивать ширину дизайна но приближаясь к минимальной, максимальной и рабочей ширине фреймов - бегунок как бы магнитится к ним.
3) Усиленно — при уменьшении и увеличении ширины дизайна бегунок передвигается только по точкам минимальной, максимальной и рабочей ширине фреймов без промежуточных размеров.

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

Идея нового инструмента в Figma

4) Поле ввода

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

Идея нового инструмента в Figma

5) Бегунок

Работает как индикатор текущей ширины дизайна а так же как слайдер потянув за который можно уменьшить или увеличить ширину дизайна.

Идея нового инструмента в Figma

6) Уменьшить

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

7) Увеличить

Увеличивает размерную шкалу по ширине, на случай если нужно более точно протестировать отдельный брейкпоинт.

Идея нового инструмента в Figma

8) Маркер

Маркер для уменьшения или увеличения ширины дизайна.

Теперь прочитав статью и поняв как работает инструмент можно еще раз посмотреть демонстрацию работы инструмента:

Конец

Конечно же это просто прототип инструмента, нет никаких гарантий что он когда нибудь появится в фигме, но я все же решил поделиться идеей, а там будь как будет.

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

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

У меня есть еще несколько идей для новых функций и инструментов фигмы, в том числе и по улучшению создания адаптивного дизайна в фигме, по этому если вам интересно — подписывайтесь, ну или не подписывайтесь.

P.S. в статье 57 раз упоминается слово “брейкпоинт” и 50 раз слово “фрейм” .

3737
48 комментариев

нет никаких гарантий что он когда нибудь появится в фигмеЭх, да нам даже не могут дать саморастягивающуюся кнопку (которая самостоятельно адаптирует свой размер под длину надписи), не говоря про прочие БАЗОВЫЕ css-фишки. Не только в фигме, а вообще. Так и продолжаем рисовать прямоугольники разными инструментами. Может, акшур когда-нибудь превратят в полноценный инструмент дизайна, вот тогда фигме со скетчем станет очень туго - в акшуре уже реализована условная логика, брейкпойнты, анимация, некоторые css-фишки и какая-никакая поддержка js, но high-fidelity дизайн в нём делать тяжело, и нет толкового developer hand off.

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

9

то что ты говоришь про кнопки, в этом году появиться в Скетче

1

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

По поводу "саморастягивающейся кнопки" у меня уже есть идея как это можно осуществить. Как доделаю прототип напишу об этом статью.

всё уже возможно с Framer X — и данные подтягивать реальные, и адаптивные кнопки делать

Интересная идея и сама реализация. Я прекрасно представляю, сколько занимает времени придумать идею и ее оформить, так как сам дизайнер.
Круто, Андрей!

4

А что мешает верстать на Bootstrap. Не умеешь? Есть куча скриптов конструкторов адаптивных сайтов, а так же тем-конструкторов для разных движков.

"Давайте представим что мы уже нарисовали дизайн главной страницы сайта в трех размерах 960px, 740px, 480px" - а если нужно больше? Если я медиа-запросами могу задать размер в css на 320px у логотипа, то у вас нужно отрисовывать всю страницу целиком из-за этого?

АААА, соррян, что-то с версткой спутал))

1