Осознанный выбор и полный контроль над цветовым набором интерфейса

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

Осознанный выбор и полный контроль над цветовым набором интерфейса

Безусловно, на данный момент нет проблем с созданием цветового набора, для абсолютно любых целей. Существует огромное количество решений и инструментов которые генерируют палитру на основе стартового цвета, среди которых онлайн-сервисы, блендтулы или плагины в экосистеме самих редакторов.

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

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

Создание цветового набора в Figma с помощью плагина "<b>Color Compass</b>"
Создание цветового набора в Figma с помощью плагина "Color Compass"

Начнем!

Тут стоить сразу разделить построение цветов на две категории: набор оттенков серого и остальные наборы (красный, синий, зеленый, желтый...). Подход тот же, но вторая категория требует дополнительных действий.

1. Серые оттенки

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

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

1. Подбираем основу для нашего набора серых оттенков относительно бренд-цветов, в нашем случае это #4D4D70, он и будет нашим первым цветом в шкале из 10.

2. Дублируем наш слой 9 раз изменяя непрозрачность слоя на 10% меньше чем у предыдущего слоя (1. 100%; 2. 90%; 3. 80%...)

10 оттенков созданных путем изменения непрозрачности слоя шагом 10%
10 оттенков созданных путем изменения непрозрачности слоя шагом 10%

3. Дублируем полностью всю шкалу цветов и используя инструмент Color Picker (i) переназначаем ей соответствующий HEX попутно убирая прозрачность слоя (возвращаем всем слоям opacity 100%)

Нижняя шкала готова к определению цветовых стилей в Figma и к дальнейшему использованию в интерфейсе
Нижняя шкала готова к определению цветовых стилей в Figma и к дальнейшему использованию в интерфейсе

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

2. Любой другой набор оттенков

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

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

Оставалось только переназначить пипеткой HEX в нижней шкале, но нет...
Оставалось только переназначить пипеткой HEX в нижней шкале, но нет...

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

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

Осознанный выбор и полный контроль над цветовым набором интерфейса

Первое что пришло в голову это создать два сегмента оттенков (светлые и темные) одного цвета основанных на двух разных HEX-кодах, для того что бы избежать грязных оттенков и отсутствие насыщенности. Но тогда мы жертвовали системным подходом и отходили от правил, что создавало дополнительные условия в создание цветов.

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

Было 10 оттенков, стало 5 оттенков. Но задача все еще оставалась нерешенной...
Было 10 оттенков, стало 5 оттенков. Но задача все еще оставалась нерешенной...

Оставалось решить проблему более темных оттенков при этом не отходить от базового HEX, но сложность заключалась в том что параметр непрозрачности не может быть больше 100%.

Непрозрачность больше 100% нелогична, но нам было необходимо добится этого эффекта
Непрозрачность больше 100% нелогична, но нам было необходимо добится этого эффекта

Возникла идея накладывать на базовый HEX еще один слой с непрозрачностью равной одному шагу что бы получить следующий темный оттенок, но результата это никакого не дало...пока мы не применили blend mode multiply.

И это сработало, мы добились "суперкоменсации" непрозрачности слоя
И это сработало, мы добились "суперкоменсации" непрозрачности слоя

В итоге получился второй темплейт для всех цветов кроме серых где базовый HEX с непрозрачностью 100% уже находился не в начале а в середине шкалы. Кроме того, для темных оттенков мы увеличили шаг непрозрачности от 20% до 30% для большего контраста.

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

Все работает максимально просто

Заключение

Обе категории наборов создаются с использованием единого подхода с незначительными дополнениями. Самое интересное что за каждый набор отвечает всего один HEX. Такую систему очень легко поддерживать и редактировать если того требует кейс.

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

1313
14 комментариев

Я для проектов просто подготовил себе библиотеку с наборами цветов. Основная либа: Primary, Secondary, Accent, Gray, Info, Warning, Accept, Denger. В дополнительной либе 12 основных цветов, применяются в основном для разных статусов, чартов и прочего.

В итоге для каждого проекта меняются только цвета основной либы,, ну то есть оттенок. А принцип везде одинаковый. Эта либа работает в шаблонизированной и настраиваемой дизайн-системе.

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

2

Вполне неплохое решение, по какому принципу меняются оттенки цветов?

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

1

Интересный питч! Я редко рабоиаю с большими проектами и непонимаю зачем нужны 10 оттенков серого или любого другого. Обычно хватает 5-6 серого и 2-3 варианта любого другого

1

Понятно, что меняя всего один хекс, мы будем менять внешний вид и у слоёв с заданным опасити. Однако, это всё равно неудобно, т.к. придётся тогда все свои 5-10 цветов, загнанных в стили в Фигме пипеткой заново переназначать. Скорости в работе со стилями на реальном проекте это не добавит. Демку палитры пересобирать не придётся, это верно, но на практике - пипетинг.

Использую похожий подход у себя в работе и очень не рад, что Фигма до сих пор не научилась делать что-то подобное самостоятельно. Или хотя бы имела возможность загнать в цветовой стиль несколько объединённых через тот же "blend" заливок.

Цветовая гамма в проекте меняется один раз на старте и 1-2 раза по мере работы, когда дизайнер приходит к решению, что некоторые цвета подобраны не совсем удачно.

Автоматизация должна быть на уровне применения цветов и сквозном использовании, и не на уровне формирования оттеночной палитры. Потратить 10 минут на палитру, тыкая пипеткой — фигня. Ускорение на этом шаге ничего не изменит. А вот то, что вы пипеткой измените цвет в палитре, а он автоматом применится на всем проекте — вот это автоматизация и ускорение.

1

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

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