Доступність

Як проєктувати палітри, дружні до дальтоніків

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

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

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

Наскільки це поширено і що насправді ламається

Порушення колірного зору (CVD) зачіпає близько 8% чоловіків і 0,5% жінок північноєвропейського походження — приблизно 1 з 12 чоловіків і 1 з 200 жінок. На продукті з будь-якою реальною аудиторією це не граничний випадок. Це ціла колонка у вашій аналітиці.

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

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

Це інша задача, ніж контраст

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

Класичний приклад: чистий червоний #FF0000 текст на чистому зеленому #008000 має контраст за яскравістю приблизно 1.3:1, що грубо провалює WCAG — але навіть якби ви «полагодили» контраст, дейтераноп усе одно мав би труднощі, бо самі ці два відтінки зливаються докупи. І навпаки, два кольори можуть мати чудовий контраст і все одно бути пасткою для CVD, якщо ви використовуєте їхній відтінок, і лише відтінок, щоб нести зміст.

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

Одне правило, що виправляє більшість проблем: ніколи не покладайтеся лише на колір

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

Виправлення майже завжди — надлишковість. Щоразу, коли колір несе зміст, поєднуйте його з другим, не-кольоровим сигналом:

Швидкий тест, який я застосовую до будь-якого екрана: уявіть його надрукованим на чорно-білому лазерному принтері. Якщо ви все ще можете його зрозуміти, ви не покладаєтеся лише на колір. Якщо два стани стають однаковими, ви знайшли свій баг.

Вибір відтінків, що витримують CVD

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

Кілька практичних правил із окопів:

Замість того щоб винаходити це заново, станьте на плечі людей, які розв'язали це строго. Палітра Окабе-Іто (також звана палітрою Вонга, за статтею Банга Вонга 2011 року в Nature Methods) — це набір із восьми кольорів, спроєктований так, щоб лишатися розрізнюваним за всіх поширених типів CVD. Hex-коди варто додати в закладки: помаранчевий #E69F00, небесно-блакитний #56B4E9, синювато-зелений #009E73, жовтий #F0E442, синій #0072B2, вермільйон #D55E00, червонувато-фіолетовий #CC79A7 і чорний #000000. Я використовував її як категоріальну палітру для більшої кількості дашбордів, ніж можу порахувати, і вона жодного разу не провалила симуляцію.

Коли ви будуєте палітру бренду чи UI, а не графік, вам зазвичай не потрібні вісім CVD-розрізнюваних кольорів — вам потрібна пара акцентів, що не зіткнуться. Ось де генератор колірної палітри заслуговує свого місця: побудуйте гармонію (спліт-комплементарну чи тріадну схему), зчитайте значення HSL, а потім свідомо розведіть два найважливіші за змістом кольори в світлості, а не лише у відтінку. Зчитування HSL робить це легким — опустіть світлість в одному, підніміть в іншому, і ви купили собі розділення, що витримує CVD. Якщо ви хочете зрозуміти, чому певні відношення на колі конфліктують більше за інші, Спліт-комплементарні проти тріадних палітр заглиблюється в геометрію.

Тестуйте — не довіряйте власним очам

Ви не можете прикинути це на око, бо (статистично) у вас, імовірно, нормальний колірний зір, а вся суть у тому, що збій для вас невидимий. Ви симулюєте.

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

Помилки, які я бачу знову й знову

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

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

Чим палітра, дружня до дальтоніків, відрізняється від палітри, що відповідає WCAG?

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

Яке поєднання кольорів найбезпечніше для дальтонізму?

Синій і помаранчевий — найнадійніша протиставлена пара: вона лишається чітко відмінною при дейтеранопії, протанопії та тританопії, трьох основних типах порушення колірного зору. Синій і червоний — сильний другий варіант. Поєднання, якого варто уникати як єдиного контрасту, — це червоний і зелений, який зливається для приблизно 99% CVD, що є червоно-зеленим дефіцитом. Коли вам потрібно більше ніж два розрізнювані кольори, використовуйте дослідницький набір, як-от палітру Окабе-Іто (Вонга), а не підбирайте на око.

Чому не варто покладатися лише на колір для передавання інформації?

Бо приблизно 1 із 12 чоловіків і 1 із 200 жінок мають ту чи іншу форму порушення колірного зору, і для них статус, показаний лише кольором (червона крапка = помилка, зелена крапка = успіх), може бути цілком нерозрізнюваним. Критерій успіху WCAG 1.4.1 (Використання кольору) вимагає, щоб колір ніколи не був єдиним засобом передавання інформації. Виправлення — це надлишковість: поєднуйте кожен значущий колір із підписом, іконкою, формою, патерном або позицією, щоб інформація вціліла навіть тоді, коли відтінок ні.

Як перевірити, чи моя палітра дружня до дальтоніків?

Використовуйте симулятор, бо якщо у вас нормальний колірний зір, ці збої для вас невидимі. Coblis (симулятор дальтонізму) дозволяє завантажити скріншот і подивитися на нього крізь вісім типів порушень. У Chrome DevTools є опція «Emulate vision deficiencies» на панелі Rendering, яка застосовує протанопію, дейтеранопію чи тританопію до живої сторінки. Плагіни Figma, як-от Stark, роблять те саме для макетів. Перевіряйте дейтеранопію першою, бо вона найпоширеніша, потім протанопію й тританопію.

Що таке палітра Окабе-Іто і чому її рекомендують?

Палітра Окабе-Іто (також звана палітрою Вонга, за статтею Банга Вонга 2011 року в Nature Methods) — це набір із восьми кольорів, спроєктований так, щоб кольори лишалися розрізнюваними за всіх поширених типів порушення колірного зору. Це фактичний стандарт для доступної візуалізації даних. Hex-коди: #E69F00 (помаранчевий), #56B4E9 (небесно-блакитний), #009E73 (синювато-зелений), #F0E442 (жовтий), #0072B2 (синій), #D55E00 (вермільйон), #CC79A7 (червонувато-фіолетовий) і #000000 (чорний). Звертайтеся до неї щоразу, коли вам потрібно кілька категоріальних кольорів, що не зіткнуться для глядачів із CVD.

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

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

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