Лекция №5: Визуальный язык (UI): Цвет и Типографика
Курс: Веб-дизайн и проектирование интерфейсов
Аудитория: 2 курс, технические специальности
Связь с практикой: База для Лабораторной работы №4 (Design System)
Ключевая мысль
Шрифты и цвета в интерфейсе — это не элементы декора. Шрифт — это визуализатор данных (голос системы), а цвет — это функциональный триггер (сигнал).
1. Типографика: Инженерный подход к рендерингу текста
В современных веб-приложениях и SaaS-платформах 90-95% полезной площади интерфейса занимает текст. Типографика в UI/UX — это дисциплина об управлении вниманием пользователя и снижении когнитивной нагрузки при парсинге визуальной информации. Если вы настроите параметры типографики математически верно, интерфейс будет выглядеть профессионально даже без графики.
1.1. Классификация гарнитур (Font Families) для инженеров
Забудьте про декоративные шрифты со сложными завитками. Интерфейсные шрифты делятся на три утилитарные категории:
Практический совет: Идеальный выбор инженера
Не подключайте в проект 10 разных шрифтов. Каждый Web Font — это дополнительный HTTP-запрос и лишние килобайты, блокирующие отрисовку страницы (проблема FOUT/FOIT). Для старта используйте максимум два шрифта: один Display (Акцидентный/Заголовочный) для крупных заголовков и один Body (Наборный/Текстовый) для основного контента.
Лучшее инжереное решение: Использовать системные шрифты (font-family: system-ui;). ОС сама подставит San Francisco для Mac, Segoe UI для Windows и Roboto для Android. Нулевое время загрузки, идеальный рендеринг.
1.2. Типографическая шкала (Modular Scale)
Размеры шрифтов в интерфейсе никогда не задаются случайными числами. Они должны выстраиваться в математическую прогрессию, подобно частотам музыкальных нот или архитектурным пропорциям (золотое сечение).
Вы выбираете базовый размер (Base size) и множитель (Ratio, например 1.25 — Major Third).
- Body (База): 16px (Стандартный размер текста в браузере по умолчанию).
- H3 (Подзаголовок): 16 * 1.25 = 20px.
- H2 (Заголовок раздела): 20 * 1.25 = 25px.
- H1 (Главный заголовок): 25 * 1.25 = ~31px (округляем до 32px для кратности 8).
Аналогия с кодом: Наследуемость
В реальной верстке жестко задавать размеры в пикселях (px) — это плохая практика, ломающая Accessibility (доступность). Разработчики используют относительные единицы rem (Root EM). Если 1rem = 16px (настройка браузера пользователя), то ваш H2 будет равен 1.5rem (24px). Если слабовидящий пользователь увеличит базовый шрифт в браузере до 20px, вся ваша шкала пропорционально увеличится, и верстка не сломается.
1.3. Макро- и Микро-типографика: Управление пространством
Читать сплошной текст физиологически тяжело. Глаз человека читает не плавным скольжением, а скачками (саккадами) с короткими остановками (фиксациями). Ваша задача как проектировщика — создать комфортные «направляющие» для глаза.
A. Интерлиньяж (Line Height) Это расстояние между базовыми линиями соседних строк. Грубейшая ошибка новичка — оставлять Line Height в значении Auto, отдавая его на откуп шрифтовому движку. Интерлиньяж должен рассчитываться по формулам:
- Для основного текста (Body): Глазу нужен “воздух”, чтобы при переходе на новую строку не сбиться. Стандарт: 140% - 160% от размера шрифта (в CSS это
line-height: 1.5;). - Для заголовков (H1-H3): Заголовки крупные, и если к ним применить множитель 1.5, строки развалятся на отдельные куски. Заголовки должны быть плотными едиными блоками: 110% - 120% (
line-height: 1.1;).
B. Длина строки (Line Length / Measure) Edge case: Представьте текстовый блок, растянутый на всю ширину 27-дюймового монитора. К концу строки глазу придется проделать огромный путь назад влево, чтобы найти начало следующей. Пользователь неизбежно промахнется мимо нужной строки.
- Инженерный стандарт: Оптимальная длина строки — от 45 до 75 символов (включая пробелы). В CSS это часто задается как
max-width: 65ch;(ch = ширина символа ‘0’). Если экран шире — ограничивайте контейнер с текстом, а не растягивайте его.
C. Иерархия весов (Font-Weight) Чтобы выделить элемент, не обязательно делать его больше. Часто достаточно изменить «вес» (толщину начертания). В цифровой среде веса обозначаются сотнями:
400(Regular) — для Body текста.500(Medium) — для кнопок, лейблов, табов.600(Semi-Bold) или700(Bold) — для заголовков. Не используйте на одном экране более 3 разных весов, это создает визуальный шум.
2. Цвет: Математическая модель HSB
Забудьте про цветовой круг Иттена, которым пользуются художники. Для инженера интерфейсов цвет — это не краска, а набор переменных. В программировании и верстке чаще всего используется HEX или RGB, так как это машинные форматы рендеринга пикселей монитора. Но проектировать интерфейс в RGB невозможно (попробуйте в уме смешать красный и зеленый, чтобы получить нужный оттенок желтого).
Поэтому в Figma мы используем цилиндрическую систему координат HSB (Hue, Saturation, Brightness) или её CSS-эквивалент HSL (Hue, Saturation, Lightness).

- Hue (Оттенок): Градус на цветовом круге от 0 до 360. Это ваша базовая переменная цвета. 0 — Красный, 120 — Зеленый, 240 — Синий.
- Saturation (Насыщенность): Вектор от центра цилиндра (0% — абсолютно серый) к его краю (100% — чистый, “кислотный” цвет).
- Brightness (Яркость): Ось Z цилиндра. От 0% (абсолютный черный) до 100% (максимальная светимость).
Аналогия с кодом: Генерация состояний кнопок
Почему HSB — это мощный инструмент? Представьте, что у вас есть базовая кнопка цвета H: 210, S: 80%, B: 90% (Синий). Разработчик просит вас нарисовать состояние :hover (наведение мыши) и :active (нажатие). Вместо того чтобы искать новые цвета на глаз, вы применяете математику:
- Для
:hoverвы просто затемняете цвет: снижаете Brightness на 10% (становится 80%). - Для
:activeснижаете Brightness еще на 10% (становится 70%). Вы получаете идеальную, математически точную шкалу состояний одного компонента.
3. Соотношение сигнал/шум: Правило 60-30-10
Цвет в интерфейсе расходуется как драгоценный ресурс. Если сделать всё ярким, интерфейс начнет «кричать», и пользователь не поймет, куда нажимать. Для контроля визуального шума инженеры используют пропорцию 60-30-10:

- 60% — Базовый фон (Background): В светлой теме это
Brightness 100%и минимальная примесь цвета (Saturation 0-2%), чтобы фон не казался стерильно-больничным белым. - 30% — Контентный слой (Secondary): Текст, границы карточек (borders), плашки, неактивные табы. Это оттенки серого (Grayscale, который мы обсуждали в Лекции №4).
- 10% — Акцентный цвет (Accent / Primary): Главный бренд-цвет с высокой насыщенностью (Saturation > 80%). Применяется исключительно для интерактивных элементов: кнопок (CTA), активных ссылок, чекбоксов, тумблеров.
Инженерное правило: Если пользователь прищурится, глядя на ваш макет, он должен видеть размытый серо-белый фон, на котором четко горят 2-3 цветных пятна. Это и есть целевые действия.
4. Семантика цвета и Системные статусы
Цвет — это визуальный эквивалент HTTP-статусов ответа сервера. Семантические цвета зарезервированы под конкретные системные сообщения, и использовать их для декора — грубейшая ошибка.
- Success (Зеленый / 2xx OK): Транзакция прошла, файл загружен.
- Warning (Желтый/Оранжевый / Form Validation): Предупреждение. Например, пароль слишком простой, или подписка истекает через 3 дня.
- Error (Красный / 4xx, 5xx Errors): Ошибка валидации формы, сбой сервера или деструктивное действие (удаление аккаунта).
- Info (Синий / Neutral): Информационные подсказки, тултипы (Tooltips), обновления системы.
Что делать при конфликте бренда и семантики?
Что делать, если вы проектируете интерфейс для МТС, где красный — это корпоративный (Accent) цвет? Пользователь привык, что красная кнопка — это “Опасно”, а у вас это кнопка “Купить”.
В таких случаях семантика ошибок должна усиливаться: ошибки выделяются не просто красным текстом, а красным фоном, тяжелыми иконками-алертами [!] и более агрессивной обводкой полей ввода, чтобы отделить системную ошибку от брендового акцента.
5. Доступность (A11y): Алгоритмы контраста и Дальтонизм
Проектирование цвета подчиняется международному стандарту WCAG (Web Content Accessibility Guidelines). Доступность — это не только забота о людях с нарушениями зрения, это забота о пользователе, который пытается прочитать ваш интерфейс со смартфона на улице под ярким солнцем.
Алгоритм контраста (Contrast Ratio)
Отношение яркости фона к яркости текста измеряется в пропорции.
- Fail (Провал): Соотношение ниже 3:1. Текст сливается с фоном. (Классическая ошибка: белые буквы на желтой или светло-зеленой кнопке).
- Уровень AA (Стандарт): Соотношение минимум 4.5:1 для обычного текста и 3:1 для крупного (заголовки).
- Уровень AAA (Строгий стандарт): Соотношение минимум 7:1. Обязательно для государственных и медицинских порталов.
Всегда проверяйте макеты плагинами Figma (например, Contrast или Able). Если алгоритм выдает Fail — это технический баг, макет не пройдет контроль качества.
Проектирование с учетом дальтонизма (Color Blindness)
Около 8% мужчин в мире имеют ту или иную форму цветовой слепоты (чаще всего дейтеранопию — неразличение красно-зеленых оттенков).
Жесткое правило инженерии: Никогда не передавайте критически важную информацию только с помощью цвета.
- Неправильно: Если пароль неверный, поле ввода просто становится красным. Дальтоник этого не увидит.
- Правильно: Поле ввода становится красным + рамка становится толще + появляется иконка ⚠️ + выводится четкий текстовый лейбл: “Неверный пароль”. Цвет должен лишь дублировать структурную информацию.
6. Систематизация: От Стилей к Дизайн-токенам (Design Tokens)
В промышленной разработке “хардкодить” цвета — это абсолютный антипаттерн, кратно усложняющий поддержку продукта. В Лабораторной №4 мы обязаны перевести все константы в Стили (Styles).
Представьте архитектурный сбой: вы вручную покрасили 50 экранов в синий #0000FF. Если бизнес потребует сделать цвет «чуть мягче», без системного подхода вам придется прокликивать 1000 элементов. При использовании стилей вы меняете ровно один корневой параметр Primary Color, и весь макет обновляется автоматически. Это прямой аналог использования CSS-переменных (:root { --primary-color: #0055FF; }) в коде.
Инженерный нейминг (Naming Convention): Имя стиля должно описывать его семантическую функцию в системе, а не внешний вид.
- Ошибочный подход:
Color / Light Blue. Если в будущем тема сменится на темную, этот синий может стать белым, и переменная сломает логику. - Инженерный подход:
Color / Primary / 500илиColor / System / Error. Использование слэша/в Figma автоматически генерирует строгую древовидную структуру папок.
7. Архитектура Темной темы (Dark Mode)
Проектирование темной темы — это не просто инверсия цветов (когда белый фон становится черным). Это сложная математическая перекалибровка.
Жесткие правила инженерии Dark Mode:
- Отказ от абсолютного черного: Строго избегаем чистого черного
#000000для фоновых слоев. Он поглощает весь свет и создает слишком режущий контраст. Стандарт индустрии — темно-серый фон (#121212). - Десатурация (Приглушение) акцентов: Насыщенные базовые цвета на темном фоне вибрируют и выглядят «ядовито». Программно снижайте Saturation и повышайте Brightness.
- Ось Z и передача глубины (Elevation): В светлой теме тень показывает высоту. Черная тень на почти черном фоне не видна. Инженерный паттерн: Чем ближе элемент к пользователю по оси Z, тем светлее его заливка. Базовый фон —
#121212, карточка на нем —#1E1E1E, всплывающий дропдаун —#2C2C2C.
8. Практический совет: Алгоритм сборки системы
Как спроектировать чистый интерфейс, если вы инженер, и у вас “нет вкуса”? Используйте строгий алгоритм:
- Зайдите на проверенные генераторы палитр (Coolors.co, Adobe Color).
- Выберите ровно один функциональный цвет (например, синий). Это будет ваш Акцент (Primary).
- Остальные цвета в макете сгенерируйте исключительно в оттенках серого (черный текст, белый фон, светло-серые плашки).
- Вы гарантированно получите профессиональный интерфейс!