{"id":14268,"url":"\/distributions\/14268\/click?bit=1&hash=1e3309842e8b07895e75261917827295839cd5d4d57d48f0ca524f3f535a7946","title":"\u0420\u0430\u0437\u0440\u0435\u0448\u0430\u0442\u044c \u0441\u043e\u0442\u0440\u0443\u0434\u043d\u0438\u043a\u0430\u043c \u0438\u0433\u0440\u0430\u0442\u044c \u043d\u0430 \u0440\u0430\u0431\u043e\u0447\u0435\u043c \u043c\u0435\u0441\u0442\u0435 \u044d\u0444\u0444\u0435\u043a\u0442\u0438\u0432\u043d\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f71e1caf-7964-5525-98be-104bb436cb54"}

Дизайн-система: иконки

Подготовка иконок к работе в дизайн-системе.

Кто я и почему об этом пишу?

Привет, меня зовут Андрей Насонов, я UI/UX-дизайнер, работаю руководителем дизайн отдела в Elonsoft. Мы создаём программные продукты и помогаем компаниям из разных отраслей масштабировать свой бизнес.
Я занимаюсь дизайном с 2008 года, начинал как графический дизайнер, но с 2015 года работаю веб-дизайнером.

Мне интересна разработка сервисного дизайна, проектирование дизайн-систем и автоматизация дизайн- и бизнес-процессов.

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

Помещайте иконки во фреймы

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

Допустим, у нас три иконки: 22x15px, 18x20px и 10x5px. Каждая из них должна быть во фрейме 24x24px.

Оставлять иконки без фрейма нельзя!
Всегда помещайте иконки во фрейм

Экспортировать иконки нужно также во фрейме.

Важно! Экспортировать нужно именно иконку во фрейме, а не слой иконки. После чего помещать ее уже в контейнер 24x24px.

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

Иконка выровнена по геометрическому центру. Отступы: слева и справа по 10px. Но из-за особенностей формы иконки возникает ощущение, что она сдвинута влево.
Иконка выровнена по визуальному центру. Отступы: слева 12px, справа 8px. Иконка специально сдвинута вправо, чтобы визуально казалось, что иконка располагается по центру.

Компонент из фрейма с иконкой

Создайте компонент из фрейма с иконкой.

Компонент из фрейма с иконкой

Это поможет вам быстро заменить одну иконку на другую, использовав функцию «Instance».

Чтобы замена через инстанс сработала, компоненты иконок должны находиться в одном фрейме (об этом дальше).

Замена иконок с помощью функции «Instance»

Иконки лучше всего именовать на английском. Если вы скачали иконку, а у нее уже есть название на английском — не переименовывайте ее.

Так вы быстрее запомните название иконок и будете легко находить на тех ресурсах, где их берете.

Заодно и новые слова на английском выучите, если у вас с ним беда, как и у меня. 😄

Хранение иконок

Статья 224, лишение свобод…… .. ладно 😄

Один проект может содержать иконки разных размеров. Например, стандартные 24x24px, 16x16px или 20x20px для элементов меньшего размера.

Основные иконки 24x24px мы храним в артборде «Icons 24». Остальные иконки размер которых больше или меньше 24px храним в «Other Icons». Обычно их не очень много.

Артборд «Trash Icons» нужен чтобы хранить в нем различные варианты иконок. Например, вы подобрали или нарисовали три иконки чата, выбрали из них одну и поместили ее в артборд «Icons 24», а другие два варианта иконки перемещаете в артборд «Trash Icons». На случай, если вы передумаете и захотите изменить свой выбор вам не придется искать их снова.

Фон и цвет

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

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

Удаление фона и применение стиля цвета

Стиль цвета нужен чтобы при замене через инстанс вы не забывали перекрашивать иконку в нужный цвет.

Советую выбрать броский цвет, который вы очень редко используете на проекте. Оставляя иконку черной или серой есть вероятность что вы будете забывать ее перекрашивать. Я выбрал коричневый.

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

Констрейнтс

Настройте у слоя с иконкой constraints по вертикальному и горизонтальному центру. Это нужно на случай, если вы захотите уменьшить или увеличить компонент иконки, но так чтобы сама иконка не меняла свой размер.

Важно! Сonstraints нужно настраивать именно у слоя с иконкой, а не у всего компонента.

Настройка constraints

Массовые действия с иконками

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

Для того, чтобы выбрать слои с иконкой сразу во всех компонентах иконок — выберите все компоненты иконок и нажмите Enter.

Мусор в иконках

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

Например, Material Design иконки имеют белый фоновый слой.

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

В случае с одноцветной иконкой — все элементы должны быть объединены в один слой.

После того, как вы объединили слои, не забывайте применять «Outline Storke» к объединенной фигуре.

Объединение иконки в один слой

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

Так выглядит SVG-код иконки, когда компонент иконки имеет несколько слоев и они не объединены в один. Код получился очень длинным и имеет целых 7 параметров «Fill» для разных элементов иконки. Так делать нельзя.

Размер файла иконки 1318 байт

А так выглядит SVG-код иконки, когда все слои объединены. Код гораздо меньше и имеет всего 2 параметра «Fill». Один для фона контейнера, другой для цвета иконки. Так делать можно.

Размер файла иконки 803 байта

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

После сжатия код иконки стал еще меньше, но внешний вид иконки не изменился.

Размер файла иконки 508 байт

Ресурсы с иконками

Ну и напоследок несколько ресурсов откуда можно брать иконки.

Material Design Icons Community
Огромный набор иконок, который содержит официальные иконки Material Design, а также иконки созданные сообществом по гайдам Material Design. На мой взгляд, это лучший набор на данный момент. Он покрывает 90% моих потребностей.
В Figma есть специальный плагин.

Material Design Icons
Официальные иконки Material Design. К сожалению, на этом сайте иконки имеют довольно странные тэги. Из-за этого некоторые иконки нереально найти через поиск. Да и файл иконки содержит в себе лишний слой с белым фоном, который на мой взгляд, не нужен.
Плагин в Figma.

Boxicons
Есть хорошие альтернативы иконкам из предыдущих ресурсов. Но не все иконки pixel perfect.
Так же имеется плагин в Figma.

Feathericon
Хороший набор качественных outline иконок. Иконки сделаны контуром с обводкой, что позволяет масштабировать и изменять толщину линий самих иконок.
Плагин в Figma

IBM icons
Иконки от IBM созданные самой компанией и сообществом.

Спасибо

Если вы узнали что-то новое или статья была вам полезна — жмите ^

0
70 комментариев
Написать комментарий...
Аккаунт удален

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

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

Спасибо)

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

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

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

Спасибо, исправлю

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

Ребята, я новичок на этой площадке. Хочу подписаться на этот паблик, а как это сделать, не могу понять. Не вижу куда нажать. 

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

Если речь идёт о паблике "Дизайн" то в начале статьи нажми на само название "дизайн" возле розовой аватарки и там уже будет "подписаться"

Ответить
Развернуть ветку
1 комментарий
Pavel Pekanov

А еще иконки можно объединять в варианты (variants), иметь несколько размеров фреймов в одной системе (20x20, 24x24, 32+ или другие, если другая кратность), иметь несколько стилей для обводок (1-2px) и при этом все это может выглядеть как единая система, а не разносортный набор иконок. Статья бесполезна, написаны азы работы в фигме и с иконками.

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

Зачем объединять иконки разного размера в варианты если в 95% случаев иконки находятся внутри другого компонента?
Как известно заменяя один компонент иконки на другой, внутри компонента кнопки например, иконка наследует размер компонента иконки который находится в родительском компоненте кнопки.

А объединять по толщине линии мне не нужно, хотя бы по тому что у меня 99% иконок по гайдам гугл материал и все они имеют 2 px линию

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

Ответить
Развернуть ветку
10 комментариев
Asf

Спасибо! В избранное !!

Ответить
Развернуть ветку
Чайка О.

Спасибо. Полезно и очень вовремя - начала изучать дизайн-системы. Надеюсь, серией статей вы охватите все необходимые для чайника темы :)

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

Спасибо, постараюсь)

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

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

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

Спасибо)
Да, я видел этот софт, правда не нашел большой пользы дня нас.
У нас рабочий процесс выстроен так что подобный софт не особо нужен. Хотя может я просто не увидел плюсы. Есть еще хороший софт iconset для таких целей, работает в облаке вроде и теги тоже можно присваивать.

Я больше склоняюсь к тому чтоб сделать автоматический экспорт всех иконок через API из фрейма "Icon 24" и чтоб они уже сразу подгружались фронтам в проект. Видел что подобное уже реализовали другие ребята, но у нас пока руки не доходят до этого.

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

Ответить
Развернуть ветку
Андрей Тимофеев

Еще я дополнил бы про одинаковый нейминг содержимого фрейма компонента. Кейс такой:
1. Есть 2 иконки-компонента с одинаковым базовым цветом (возьмем #000000), и одинаковым неймингом содержимого внутри компонента: icon -> Vector
2. Добавляем один из компонентов в макет и изменяем цвет на #303030
3. Заменяем через instance иконку на вторую

При смене цвет иконки не изменится, те останется #303030

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

Да все верно, мы так сейчас и делаем, прописали это во внутренних гайдах компании.

Ещё хорошая практика блокировать содержимое компонента иконки. Так гораздо легче выделять иконку с зажатым ctrl

Ответить
Развернуть ветку
Илья Хальзов

Четко и по делу. Очень полезно! Спасибо!

Ответить
Развернуть ветку
Зарина Орлова

Достаточно интересная статья, спасибо, читала с удовольствием

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

Спасибо)

Ответить
Развернуть ветку
Artem Petrenkov
Разработчик же зачастую выравнивает иконку по геометрическому центру не замечая разницы.

У разработчика нет инструментов для выравнивания изображений по визуальному центру. Поэтому если, например, все иконки должны быть 24*24, а дизайнер экспортирует 15*19, то разработчик может или автоматически выводить её по центру блока 24*24 (компьютер выравнивает по геометрическому центру), или выводить как есть (всё разъезжается), или открывать иконку в редакторе, выставлять артборд 24*24 и выравнивать самостоятельно. Иногда выходит так, что такие кривые иконки не центруются в блоке, а автоматически растягиваются непропорционально — получается ещё хуже.

Ответить
Развернуть ветку
Егор Быков

Спасибо за статью. Полезно

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

Четко, по делу и соответствует тому как это делают в реальных дизайн системах. Хороший материал.

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

 Спасибо!! 

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

Спасибо за статью и ресурсы с иконками

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

Пожалуйста)

Ответить
Развернуть ветку
Максим Емельянов

Про код не знал, клевая статья) 

Ответить
Развернуть ветку
Dmitry Maltsev
>Размер файла иконки 508 байт

588

Ответить
Развернуть ветку
Степан Марципан

да вы епанулись. шел 21й год 21го века.. до сих пор учимся иконки рисовать.

Ответить
Развернуть ветку
Сергей Надежин

Ну вот например Вконтакте до сих пор не умеет ровные иконки рисовать, а между прочим это чуть ли не самая главная иконка, которую постоянно видишь :)

Ответить
Развернуть ветку
3 комментария
Андрей Щеголев

А я что-то не вижу, или реально нигде не написано, что в качестве примера используется фигма? Пока не дошёл до комментов, не понимал, что происходит. Словно урок из подборки, но не ясно какой) И это я хотя бы слышал/видел, что такое фигма.

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

Так примеры интерфейса приложены, вы чего :)

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

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

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

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

Ответить
Развернуть ветку
1 комментарий
Angel Vivaldi

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

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

Если под картинками ты имеешь ввиду растр, то да. За такое дизайнера по рукам надо бить))

А так не всегда и не всем подходит использование шрифтовых иконок, иногда лучше иконку в виде компонента в коде делать, но там везде есть свои плюсы и минусы)

Ответить
Развернуть ветку
8 комментариев
Руслан Джонсон

Вопрос не по иконкам, а в целом в фигме. Нужно ли такие элементы как хедер, карточка товара и тд делать в фрейме? Или достаточно просто сгруппировать в папку

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

Если я правильно понял "сгруппировать в папку" это просто сделать группой?

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

Группы я расцениваю чисто как способ объединения нескольких слоев, чтоб в панели слоев был порядок. У меня например из 100% только в 2-5% используются группы, остальное все на фреймах.

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

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

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

80% иконок использую из тех ресурсов что описал в конце статьи, а остальные 20% прям в фигме и рисую

Ответить
Развернуть ветку
4 комментария

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

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