{"id":14272,"url":"\/distributions\/14272\/click?bit=1&hash=9c431bca9c7cafdd4ed114bc7fb4d407f06f28aa165d6f80b9637d3a8581e5c2","title":"\u0421\u0431\u0435\u0440\u041a\u043e\u0442 \u2014 \u043f\u0435\u0440\u0432\u044b\u0439 \u0446\u0438\u0444\u0440\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u043b\u044e\u0435\u043d\u0441\u0435\u0440, \u043a\u043e\u0442\u043e\u0440\u044b\u0439 \u043f\u043e\u043b\u0435\u0442\u0435\u043b \u0432 \u043a\u043e\u0441\u043c\u043e\u0441","buttonText":"","imageUuid":""}

Приёмы и Фишки. Разметка элементов в Figma

Приёмы и Фишки

О чем статья?

Всем привет, меня зовут Андрей Насонов, я UI/UX дизайнер, работаю руководителем дизайн отдела в Elonsoft, это моя серия статей о фишках, трюках и прочих выкрутасах в Figma 🙂

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

Хочу поделиться приемом который облегчит жизнь дизайнерам, фронтендерам и QA.
А главное сократит количество несоответствий верстки к дизайну.

Проблема

Наверное мало кто замечал но если зайти в фигму с правами «can view» и навести курсор на элемент который не имеет цвет заливки то фигма не отобразит границы элемента.

Даже если вы присвоите элементу обводку или присвоите цвет но зададите 0% opacity граница все ещё не будет отображаться.

И так как фронтендеры, QA и другие участники команды зачастую имеют права "can view, подобное поведение фигмы им доставляет много неудобств.

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

Стандартное поведение выделения. Границы кнопки и компонента иконки не подсвечиваются.

К чему это приводит

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

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

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

Решение проблемы

Чтобы решить данную проблему я придумал небольшой костыль, или «Пистон» как говорит один чувак на Ютубе.

  1. Создайте стиль цвета.
  2. Откройте окно редактирования стиля.
  3. Нажмите на квадратное превью цвета и в верхнем левом углу выберите «Image» вместо «Solid». После чего наведите курсор на шахматку и кликните на кнопку «Choose image»
  4. Далее выберите полностью прозрачное png изображение. Чем меньше изображение тем лучше, я использовал изображение 1x1 пиксель. (Изображение можно скачать по ссылке ниже)
  5. Всё, стиль готов.
Процесс создание стиля

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

Выделения границ элемента с примененным стилем.

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

Прозрачный png файл 1x1px можно экспортировать по этой ссылке (в красной рамке, смотрите панель слоев)

Где применять?

Я присваиваю данный стиль к прозрачным элементам типа basic кнопкам, stroke кнопкам, табам, айтэмам списка, компонентам иконки, ячейкам таблицы и тд, а так же использую этот стиль для разметки структуры страницы.

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

PS. Если применяете данный стиль к компоненту иконки, не забудьте снять чекбокс «Show in exports» чтобы при экспорте иконки в svg не было лишнего кода.

Сравнение кода двух svg иконок. Иконка которая была экспортирована с выключенным чекбоксом «Show in exports» весит в 2 раза меньше и имеет чистый, короткий код.

Бонус

Если вы используете прием когда компонент иконки оборачивается в union то если вы покрасите компонент иконки в этот стиль вы сможете быстро выделять иконку комбинацией ctrl+ЛКМ. Вам больше не нужно проваливаться через несколько слоев или нажимать Enter чтобы добраться до иконки.

Спасибо

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

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

0
27 комментариев
Написать комментарий...
Eugene

Это очень плохой совет. Для того чтобы границы объекта отображались достаточно установить значение frame для группы. 

Ответить
Развернуть ветку
Андрей Насонов
Автор

Я думаю ты не понял проблему полностью. Перейди в проект по ссылке и посмотри примеры.
Я использую только фреймы и границы все равно не отображаются когда у тебя права "Can View" и например кнопка лежит внутри другого фрейма.

Ответить
Развернуть ветку
Eugene

Чтобы в режиме can view выделить фрейм (границы) нужно зажать cmnd. Чтобы выделить фрейм внутри фрейма нужно нажать cmnd+дабл клик.

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

Ответить
Развернуть ветку
Андрей Насонов
Автор

Я в курсе как это работает, и разработчики в курсе, но пока я не сделал так чтоб им было удобно работать, было много несоответствий в верстке.

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

Ответить
Развернуть ветку
Eugene

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

Ответить
Развернуть ветку
Андрей Насонов
Автор

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

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Андрей Насонов
Автор

что такое view only, где это устанавливается?
can view  это не одно и то же?

В любом случае это уже сработало. Я показал как. У нас разработчики работают только под правами Can View и у них теперь отображаются границы

Ответить
Развернуть ветку
Igor Reverb

А не проще дать фронтендеру права Can edit?

Ответить
Развернуть ветку
Андрей Насонов
Автор

Нет, потому что работая с макетами кто-то обязательно что-то сдвинет или удалит

Ответить
Развернуть ветку
Евгений Востров

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

Ответить
Развернуть ветку
Андрей Насонов
Автор

Я думаю в копировании нет особо смысла, есть же версионирование.
Да у нас professional план и как то платить за каждого разработчика 15 баксов в месяц просто так не хочется. Мне куда легче один раз применить этот стиль к элементам дизайн системы и забыть.

Ответить
Развернуть ветку
Igor Reverb

Всегда даю разрабам права на редактирование. Они сдвигают и удаляют не больше, чем я сам.

Ответить
Развернуть ветку
Артём Разиньков

А вкладку Inspect религия не позволяет нажать?

Ответить
Развернуть ветку
Андрей Насонов
Автор

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

Ответить
Развернуть ветку
Артём Разиньков

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

Ответить
Развернуть ветку
Андрей Насонов
Автор

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

Ответить
Развернуть ветку
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Агей Лихачёв

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

Ответить
Развернуть ветку
Евгений Востров

 А пробовали автолейаут? Там совсем все удобнее отображается

Ответить
Развернуть ветку
Андрей Насонов
Автор

конечно)
в примере автолейаутом и сделано

Ответить
Развернуть ветку
Viktor Sukhomlyn

В смысле про пнг?)
Фрейм в опасити зиро или вообще вырубаешь если лень тянутся к хоткею и все
https://puu.sh/HgBpK/15d55825bc.jpg

Ответить
Развернуть ветку
Андрей Насонов
Автор

Ничего из этого не работает, границы кнопки не будут отображаться по наведению когда смотришь с правами can view и когда эта кнопка лежит внутри ещё одного фрейма

Ответить
Развернуть ветку
Viktor Sukhomlyn

точно — https://puu.sh/HgBOZ/60d107e191.png ?
в зеплине - https://puu.sh/HgBUS/a6225cca19.jpg

Просто знаю о чем говорю, тк когда-то обсуждали на проекте эту штуку. По нашей градации, мидл — челики, фронты / ios/android девы и выше, должны это (что кнопка имеет фрейм а не просто кусок текста) понимать на интуитивном уровне.

Ответить
Развернуть ветку
Андрей Насонов
Автор

Точно
Я специально сделал проект и кинул ссылку чтоб все могли это проверить. зайди по ссылке и посмотри как у тебя  не будут выделятся границы в левом и как будут в правом.
https://www.figma.com/file/aPYPMzhO4yi9CjWVpHQCJp/Example-Style?node-id=1%3A880&ref=vc.ru

скрин который ты скину либо сделан c аккаунта c правами can edit, либо ты не понял в чем суть проблемы выделения

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

Я тоже знаю о чем говорю)) и сравнивал результат верстки без этого стиля и со стилем. У фронтов меньше вопросов, верстка в большенстве случаев пиксель в пиксель

Ответить
Развернуть ветку
Viktor Sukhomlyn
Ответить
Развернуть ветку
Андрей Насонов
Автор

Кажется ты не понял суть проблемы, выделить фрейм возможно из панели слоев, или с зажатым контролом проваливаясь уровень за уровнем. Невозможно выделить некоторые фреймы срезу в один клик. Если ты посмотришь гифки или прочитаешь внимательно что я писал - то возможно поймешь)

Второй вариант у тебя особенная фигма и у тебя одного это работает)

Ответить
Развернуть ветку
24 комментария
Раскрывать всегда