Nigma
Nigma
2 мин. читать
766 показов
147 открытий

Figsight #14: Автоиконки

Как насчёт иконок, которые автоматически меняют детализацию в зависимости от размера и при этом не ломаются? Сегодня разберёмся, как этого добиться.

Сразу в бой

Представим ситуацию: у вас есть набор иконок в разных размерах и с разной детализацией, например, 16×16, 24×24 и 32×32. Логично, что при изменении размера компонента хочется автоматически подставлять нужный вариант иконки.

Но вот незадача — стандартные методы Figma так не умеют. Кто-то решает это через обёртки-компоненты, кто-то вручную подставляет нужные версии. Но всё это не даёт той автоматизации, о которой мечтаю я.

Отказаться от детализации иконок в Figma? Нет уж, давайте-ка попробуем найти решение!

Доппельгангер 2.0

Стоп, а ведь у нас уже было решение, которое может сработать! В статье Figsight #10: Доппельгангер мы обсуждали, как форсировать изменение свойств у слот-компонента. Тогда метод отлично работал, но с тех пор Figma изменилась, и теперь встроенные компоненты отображаются не так, как хотелось бы.

Но есть хорошая новость: если компоненту присвоена хотя бы одна переменная, Figma автоматически привязывает его к теме по умолчанию, даже если мод не установлен. Мы можем это использовать!


Достаточно создать переменные, соответствующие размерам иконок, и применить их к компоненту. Разумеется, сами иконки должны быть заранее подготовлены в виде вариантов. Иногда Figma всё ещё может глючить, но в целом метод работает.

Фокус с исчезновением

Хорошо, но собирать иконки в варианты — дело неблагодарное. Можно ли автоматизировать процесс?

Один из вариантов — использовать брейкпоинты из Figsight #4: Охота за брейкпоинтами. Однако там оставалась нерешённая проблема: как сделать так, чтобы брейкпоинты не накладывались друг на друга? В нашем случае это критично.

Мы уже знаем, как устроить компенсатор Before, но что насчёт After? После нескольких экспериментов я нашёл нужную структуру:

Фрейм Null size отвечает за размер компенсатора (например, 0×120px) и включает отрицательный Gap — как его настроить, подробно разбирали в Figsight #0: Начнём с простых трюков в Figma.

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

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


Этот метод подойдёт не всем, так как требует особой подготовки библиотеки иконок, но лично для меня он оказался идеальным решением. Если у вас есть идеи, как сделать ещё лучше — пишите, обсудим! А примеры как обычно расположены тут.

766
0

Подпишитесь на еженедельный
дайджест

Редакция отбирает лучший контент за неделю и отправляет его на вашу почту

Cпасибо за подписку!

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

Рекомендации

только для зарегистрированных
только для зарегистрированных
Подтвердите действие
Точно?
Сообщение
Текст
Подтвердите действие