Експертиза · Design UI/UX
Система дизайну, у якій контраст обчислюється, рух має кнопку зупинки, а все, що не проходить перевірку, написано прямо.
Ми працюємо з кольоровими токенами з обчисленим коефіцієнтом контрасту, шаблонами клавіатури, перевіреними елемент за елементом, і анімаціями, що зупиняються відповідно до налаштування системи. Ми перевіряємо інструментом, на реальних сторінках, і публікуємо також те, що не пройшло.
Вже збудованоSistemul rulează pe site-ul acesta și se poate inspecta. Tokenul `--muted: #666b65` obține între 4,72:1 și 5,45:1 pe cele șapte fundaluri ale sitului — recalculat de noi cu formula de luminanță din WCAG, nu preluat dintr-un instrument. Opt culori scrise direct în foaia de stil produceau 2,88–4,49:1; le-am găsit cu axe-core 4.10.2 rulat pe zece pagini live și le-am înlocuit cu tokenul, iar corectura e deja în foaia servită de producție. A doua implementare verificabilă: mecanismul de oprire a animațiilor — 38 de elemente animate la infinit pe pagina de start, toate acoperite de un buton de pauză, plus regula globală care anulează animațiile la `prefers-reduced-motion: reduce`.
Більшість «систем дизайну» — це палітра й список компонентів. Наша починається з більш нудної та корисної речі: кожен колір тексту має обчислене співвідношення контрасту щодо кожного фону, на якому він фактично з’являється. Не «виглядає добре», а число. Токен другорядного тексту на цьому сайті, `--muted: #666b65`, дає від 4,72:1 до 5,45:1 на семи використаних фонах. Поріг, потрібний для малого тексту, — 4,5:1.
Це число не з’явилося зі здорового глузду. Ми запустили axe-core 4.10.2 на десяти сторінках власного сайту, і єдиним WCAG-правилом, яке системно порушувалося, був контраст: від 31 до 43 вузлів на сторінку, з яких 31 надходили з шапки та підвалу, тож множилися на всі 147 адрес. Вісім кольорів, записаних прямо в таблиці стилів, давали від 2,88:1 до 4,49:1. Найгірший, при 10 px і 3,72:1, був саме рядок із юридичними посиланнями — шлях, яким людина йде, коли хоче скористатися своїм правом.
Друга частина системи — рух, який розглядається як функція, а не як декор. На головній сторінці є 38 елементів, що анімуються нескінченно. Усі вони прикриті кнопкою паузи: під час натискання переходять у стан зупинки, мітка змінюється, а стан оголошується для читачів екрана. Окремо глобальне правило скасовує будь-яку анімацію та перехід, коли система просить зменшений рух, зупиняє плавне прокручування і навіть ховає кнопку паузи, яка стає непотрібною. Ми також перевірили класичну пастку — анімацію, що починається з майже нульової непрозорості й лишає вміст невидимим, коли її скасовано: тут її немає.
Все інше — дисципліна: видимий фокус-індикатор, 2 px, застосований лише під час навігації клавіатурою; пересування стрілками в групах tabsів, за рекомендованою моделлю; форми з помилками, оголошеними як alert, і підтвердженнями, оголошеними як state. І правило, якого ми тримаємося жорстко: те, що ми не змогли перевірити, пишеться як неперевірене. У власному аудиті є розділ про обмеження інструмента, і дві знайдені там вади все ще відкриті — вони нижче, з назвами.