Теорія кольору

Тінти, шейди й тони простими словами

Команда colorPaletteFinder9 хв читання

У моїй першій реально випущеній палітрі було рівно п'ять кольорів, і чотири з них були тим самим синім. Я не планував це так — я просто весь час потребував «трохи світлішої версії оцього для тла картки» і «темнішої для рамки» і «чогось приглушеного для неактивної кнопки». Те, що я насправді робив, не маючи для цього словника, — це створював тінти, шейди й тони. Щойно я вивчив, що ці три слова описують три точні операції, робота з палітрою перестала бути спробами навмання й стала чимось ближчим до арифметики.

Цей посібник про ту арифметику. Що таке тінти, шейди й тони насправді, чому світлість і насиченість — це два різні регулятори, а не один, і як перетворити один відтінок на чисту тональну шкалу, на якій можна реально будувати інтерфейс. Усе тут прямо відповідає елементам керування HSL у генераторі колірної палітри, тож ви можете слідкувати з реальними числами замість відчуттів.

Спершу однореченнєві визначення, потім нюанс

Ось визначення, оголені до кістки:

Ось різниця між тінтом, шейдом і тоном на одному подиху, і більшість статей на цьому зупиняється. Але найцікавіше — те, що спільне в усіх трьох: кожен із них зменшує хрому — чисту барвистість відтінку. Повністю насичений відтінок настільки інтенсивний, наскільки він взагалі може бути. Тієї миті, коли ви домішуєте будь-яку нейтраль (білий, чорний чи сірий), ви витягуєте з нього інтенсивність. Це добре задокументовано в стандартному довіднику з тінту, шейду й тону: додавання білого, чорного чи сірого однаково знижує хрому кольору, хоча вони рухають світлість у різних напрямках.

Тож ментальна модель — не «тінт = світліший, шейд = темніший, тон = приглушений» як три не пов'язані ефекти. Це один ефект — розведення чистого відтінку нейтраллю — побачений із трьох напрямків. Саме це переосмислення дає клацнути наступній ідеї.

Світлість і насиченість — це два різні регулятори

Найкорисніше, що ви можете засвоїти, — це те, що світлість і насиченість незалежні. Початківці сприймають «зробити світлішим» і «зробити менш інтенсивним» як один жест, і саме тому їхні палітри стають крейдяними й пласкими. Це не той самий жест. Це два окремі регулятори, а тінти, шейди й тони — просто різні комбінації того, як ви їх крутите.

Саме тому HSL — це колірна модель, яку варто вивчити. HSL означає hue, saturation і lightness (відтінок, насиченість і світлість) і розщеплює колір на три числа, які можна налаштовувати по одному:

З цим словником три операції стають точними. Тінт — це переважно підвищення світлості до 100%. Шейд — це переважно зниження світлості до 0%. Тон — це переважно зниження насиченості до 0%, тримаючи світлість приблизно там, де вона є. Довідник MDN із нотації HSL — хороше місце, щоб підтвердити синтаксис, якщо ви хочете записати їх як CSS.

Одна точна виноска, бо на ній спотикаються. «L» у HSL — це lightness (світлість), а не «value» чи «brightness». Є споріднена модель, HSB/HSV, де третій канал — це value (яскравість), і вона поводиться інакше — у HSB 100% value при повній насиченості дає вам яскравий чистий колір, тоді як у HSL 100% lightness завжди дає білий. Якщо ви колись витягали колір із Photoshop (який використовує HSB), а він виглядав не так у CSS (який використовує HSL), причина саме в цій неузгодженості. Для побудови тональних шкал HSL — дружніша модель саме тому, що світлість чисто йде від чорного до білого.

Як освітлити чи затемнити колір, не зруйнувавши його

Тепер практична частина, бо тут є правильний і неправильний спосіб.

Наївний спосіб освітлити колір — потягнути світлість угору й вважати, що готово. Проблема в тому, що в міру наближення кольору до білого тримання насиченості сталою робить його тонким і вицвілим — блідою, анемічною версією самого себе. Виправлення, до якого досвідчені дизайнери тягнуться майже рефлекторно: піднімаючи світлість, також трохи піднімайте насиченість, а іноді зсувайте відтінок на кілька градусів. Світлі тінти часто виглядають насиченішими з трохи більшою насиченістю, ніж середній тон, а не з меншою.

Затемнення має дзеркальну пастку. Опустіть світлість до 0, лишивши насиченість у спокої, — і темні кольори стануть каламутними й мертвими: плаский, неживий майже-чорний. Хороші темні шейди зазвичай хочуть, щоб їхню насиченість збільшили в міру потемніння, і часто невеликого зсуву відтінку до синього чи червоного, щоб вони відчувалися продуманими, а не так, ніби хтось просто вимкнув світло. Це найбільша окрема причина, чому шкали, зібрані вручну, виглядають живішими за згенеровані наївною інтерполяцією до чорного.

Тож чесна відповідь на питання, як освітлити чи затемнити колір, така: рухайте світлість як основну дію, але не заморожуйте два інші канали. Зчитування HSL в інструменті полегшує це відчути — змініть одне число, дивіться на зразок, і ви швидко навчитеся, скільки насиченості потрібно даному відтінку на кожному краю шкали.

Побудова чистої монохроматичної шкали з одного відтінку

Ось де все стає корисним. Монохроматична колірна шкала — це один відтінок, розгорнутий у повну драбину тінтів, шейдів і тонів, і вона є кістяком практично кожного реального інтерфейсу. Коли ви обираєте монохроматичне правило в генераторі колірної палітри, саме цю структуру він генерує: один відтінок, багато кроків світлості.

Дозвольте мені побудувати одну вручну, щоб ви побачили логіку. Почніть із базового синього на відтінку 217, доволі повній насиченості, середній світлості — назвемо його #2563EB. Тепер згенеруйте градацію, проводячи світлість від дуже світлого до дуже темного, тримаючи відтінок біля 217 і піднімаючи насиченість на обох краях:

Зверніть увагу, що дає вам ця драбина. Кожен інтерактивний стан, потрібний кнопці, — спокій, наведення, активність — випадає з того самого відтінку, на три кроки світлості один від одного. Ви не вигадуєте нові кольори; ви крокуєте вниз по шкалі. Саме тому їх кодують як нумеровані токени (blue-50 через blue-900) у дизайн-системах. Якщо ви хочете заглибитися в перетворення такої градації на повторно використовувані змінні, створення масштабованих колірних токенів підхоплює рівно там, де це закінчується.

Кілька важко здобутих правил для самої шкали:

Де тони відпрацьовують своє місце в UI

Тінти й шейди виконують основну роботу в UI-градації, але тони — приглушені, змішані із сірим версії — розв'язують конкретну задачу, яку чисті тінти й шейди не можуть: стани, що мають відступати.

Очевидний приклад — неактивні елементи керування. Неактивна кнопка не має бути світлішим синім (це читається як інший активний стан) — вона має бути притлумленим синім, знебарвленим до сірого, щоб ясно сигналізувати «зараз недоступно». Візьміть свій #2563EB і потягніть насиченість далеко вниз до сірого, тримаючи світлість помірною, — і ви отримаєте щось на кшталт #9AA6BF: усе ще ледь синій, очевидно інертний. Це тон, що робить рівно те, чого не можуть тінти й шейди.

Тони — це також те, як ви будуєте витончені, негаласливі поверхні. Чисто-сіра нейтраль може відчуватися холодною й відірваною від вашого бренду. Тонована нейтраль — сірий із кількома відсотками вашого відтінку бренду, домішаними всередину, — робить так, що тло й рамки відчуваються належними до тієї самої родини, що й ваш акцентний колір. Це трюк за багатьма палітрами, що відчуваються дорогими: «сірі» зовсім не сірі, вони — сильно тоновані версії основного відтінку. Це також центральне для хороших палітр темної теми, де пласкі чисто-чорні поверхні виглядають різко, а злегка тоновані темні поверхні читаються як продумані.

Помилки, на яких я досі ловлю себе

Усе зводиться до цього: відтінок — це лише відправна точка. Тінти, шейди й тони — це три способи розтягнути цю одну відправну точку в повну робочу палітру — світліше з білим, темніше з чорним, тихіше із сірим — а HSL дає вам регулятори, щоб робити це свідомо, а не випадково. Оберіть відтінок, який вам подобається, відкрийте монохроматичне правило й проведіть повзунок світлості від краю до краю. До моменту, коли ви побудуєте одну хорошу дев'ятикрокову градацію вручну, ви вже ніколи не дивитиметеся на «набір кольорів» так само. Це майже завжди один колір, одягнений у дев'ять вбрань.

Поширені запитання

Чим відрізняються тінт, шейд і тон?

Тінт — це відтінок із доданим білим, тож він стає світлішим і м'якшим (червоний стає рожевим). Шейд — це відтінок із доданим чорним, тож він стає темнішим і глибшим (червоний стає бордовим). Тон — це відтінок із доданим сірим, тож він стає приглушеним і запиленим, без обов'язкової значної зміни світлості (червоний стає курним рожевим). Усі три зменшують чисту барвистість, або хрому, вихідного відтінку — вони просто рухають світлість у різних напрямках.

Що таке тінт кольору, якщо точно?

Тінт — це те, що ви отримуєте, змішуючи чистий відтінок із білим. Це підвищує світлість кольору й м'яко знижує його інтенсивність, даючи світлішу, лагіднішу версію оригіналу — рожевий є тінтом червоного, небесно-блакитний є тінтом синього. У термінах HSL зробити тінт переважно означає підвищити значення світлості до 100%, часто з невеликим додаванням насиченості, щоб світлий колір не виглядав вицвілим.

Як освітлити чи затемнити колір, не зробивши його вицвілим або брудним?

Використовуйте світлість як основний регулятор, але не заморожуйте насиченість. Освітлюючи, підвищуйте світлість і трохи піднімайте насиченість, щоб тінт лишався насиченим, а не блідим і тонким. Затемнюючи, знижуйте світлість, але злегка збільшуйте насиченість (а іноді зсувайте відтінок на кілька градусів до синього чи червоного), щоб шейд лишався живим, а не каламутним. Заморожування насиченості на весь діапазон — найпоширеніша причина, чому шкали виглядають пласкими.

Чим світлість відрізняється від насиченості?

Це два незалежні регулятори. Світлість (lightness у HSL) контролює, наскільки колір світлий чи темний, від чорного на 0% до білого на 100%. Насиченість контролює, наскільки колір інтенсивний чи чистий, від яскравого відтінку повної сили на 100% до нейтрального сірого на 0%. Можна змінити одне, не змінюючи інше — колір може бути темним і яскравим або темним і приглушеним. Сприйняття їх як одного жесту і є тим, що породжує крейдяні, неживі палітри.

Як побудувати монохроматичну колірну шкалу для UI?

Почніть з одного базового відтінку і проведіть його світлість від дуже світлого до дуже темного виразними кроками, тримаючи відтінок приблизно сталим і піднімаючи насиченість на світлому й темному краях. Цільтеся приблизно в дев'ять кроків, щоб мати світлі тінти для тла й рамок, ваш базовий колір посередині для основних елементів і темні шейди для наведення, активного стану й тексту. Тримайте сусідні кроки помітно різними, використовуйте тісніші прирости на світлому краю й перевіряйте контраст тексту окремо. Монохроматичне правило в генераторі колірної палітри створює цю структуру автоматично.

Хочете поекспериментувати з кольорами?

Спробуйте наш безкоштовний генератор кольорових палітр, щоб знайти ідеальну гармонію — із вбудованою перевіркою контрасту за WCAG.

Відкрити генератор