Как работает RGB и как управлять цветом через числа

Иван Корнев·26.05.2026·5 мин

RGB — это аддитивная цветовая модель для экранов, где любой оттенок формируется смешением красного (Red), зелёного (Green) и синего (Blue) света. Цвет задаётся тремя числами от 0 до 255, где 0 означает отсутствие света, а 255 — максимальную яркость канала. Понимание этой логики позволяет точно настраивать цвета в дизайне и верстке, избегая «грязных» оттенков и проблем с контрастностью.

Коротко о главном:

  • R (Red) — красный канал.
  • G (Green) — зелёный канал.
  • B (Blue) — синий канал.
  • Диапазон: 0–255 для каждого канала.
  • Итог: rgb(0,0,0) — чёрный, rgb(255,255,255) — белый.

Принцип работы аддитивной модели

В отличие от красок (субтрактивная модель CMYK), где смешение даёт грязь, в RGB смешение световых лучей увеличивает яркость. Экраны излучают свет, поэтому базовым состоянием является чёрный (пиксель выключен).

  • Аддитивность: Добавление значений в каналы делает цвет светлее.
  • sRGB: Стандартное цветовое пространство для веба и большинства мониторов. Если вы не работаете с профессиональной полиграфией или HDR-видео, ваши значения RGB находятся именно в этом пространстве.

Когда все три канала имеют одинаковое значение (например, 128, 128, 128), получается нейтральный серый цвет. Чем выше это число, тем светлее серый.

Как читать значения RGB

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

Базовые ориентиры

ЦветЗначение RGBЛогика
Чистый красный255, 0, 0Максимум красного, остальные выключены
Чистый зелёный0, 255, 0Максимум зелёного
Чистый синий0, 0, 255Максимум синего
Жёлтый255, 255, 0Красный + Зелёный (синий выключен)
Циан (Голубой)0, 255, 255Зелёный + Синий
Маджента (Пурпурный)255, 0, 255Красный + Синий
Белый255, 255, 255Все каналы на максимуме
Чёрный0, 0, 0Все каналы выключены

Лайфхак для настройки оттенка: Если цвет кажется слишком «кислотным» или неестественным, попробуйте снизить значение доминирующего канала на 10–20 единиц и добавить по 5–10 единиц в два других канала. Это смягчит цвет, сделав его более сложным и приятным глазу.

Связь RGB и HEX: быстрый перевод

В веб-разработке часто используется шестнадцатеричный формат (HEX), но он математически идентичен RGB. HEX-код состоит из символа # и шести символов, где каждые два отвечают за один канал (R, G, B).

Формат: #RRGGBB

Пример расшифровки

Код #3B82F6:

  1. RR = 3B (шестнадцатеричное) → 59 (десятичное). Это Red.
  2. GG = 82 (шестнадцатеричное) → 130 (десятичное). Это Green.
  3. BB = F6 (шестнадцатеричное) → 246 (десятичное). Это Blue.

Итог: #3B82F6 = rgb(59, 130, 246).

Знание этого соответствия полезно, когда нужно быстро понять характер цвета по коду: если первые две цифры близки к FF, в цвете много красного; если последние — много синего.

Алгоритм подбора гармоничной палитры

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

Шаг 1. Определите доминанту

Выберите основной цвет бренда или интерфейса. Например, тёплый оранжевый: rgb(255, 165, 0).

Шаг 2. Создайте вариации (Tints and Shades)

Не меняйте все каналы хаотично.

  • Для осветления (ближе к белому): Прибавляйте одинаковое значение ко всем трём каналам, пока не достигнете 255.
  • Для затемнения (ближе к чёрному): Убавляйте одинаковое значение от всех трёх каналов, пока не достигнете 0.

Шаг 3. Подберите акценты

Используйте комплементарные или аналоговые схемы, контролируя баланс каналов:

  • Аналоговые цвета (соседние на круге): Плавно перетекают друг в друга. Например, если база — синий (0, 0, 255), аналоговый фиолетовый получится добавлением красного (100, 0, 255).
  • Комплементарные цвета (противоположные): Дают высокий контраст. Для синего (0, 0, 255) комплементарным будет жёлтый (255, 255, 0).

Практическая таблица ролей в UI

Роль элементаРекомендация по RGBПример
Основной фонВысокие значения всех каналов (светлый) или низкие (тёмный)248, 250, 252
Основной текстКонтрастный фону, избегайте чистого чёрного33, 37, 41
Акцент (Кнопка)Насыщенный цвет, один канал доминирует59, 130, 246
Успех (Success)Доминирует Green, немного Blue для свежести34, 197, 94
Ошибка (Error)Доминирует Red, минимум Green/Blue239, 68, 68

Частые ошибки при работе с RGB

  1. Игнорирование контраста. Цвета могут красиво смотреться в палитре, но становиться нечитаемыми в интерфейсе. Светло-серый текст на белом фоне (rgb(200,200,200) на rgb(255,255,255)) — классическая ошибка. Всегда проверяйте коэффициент контрастности (минимум 4.5:1 для обычного текста).

  2. «Грязные» цвета из-за избытка каналов. Если вы хотите получить яркий зелёный, но добавляете туда немного красного и синего «для сложности», цвет становится болотным. Яркие акцентные цвета должны иметь явного лидера среди каналов.

  3. Проблемы дальтоников. Сочетания Red/Green или Green/Brown плохо различаются людьми с нарушением цветовосприятия.

Не кодируйте информацию только цветом. Если красный означает «ошибку», а зелёный «успех», добавьте иконки или текстовые подписи.
  1. Путаница с прозрачностью. В CSS есть формат rgba(), где четвёртое значение (Alpha) отвечает за прозрачность от 0.0 до 1.0. Не путайте его с цветовыми каналами. rgb(255, 0, 0, 0.5) — это полупрозрачный красный.

FAQ

Можно ли использовать значения больше 255? В стандартном 8-битном канале sRGB — нет. Значения ограничены диапазоном 0–255. В форматах HDR или Deep Color (10-бит и выше) диапазон шире, но для веба и обычных интерфейсов используется стандарт 8 бит.

Как сделать цвет «теплее» или «холоднее»?

  • Теплее: Увеличьте значение красного (R) и немного зелёного (G).
  • Холоднее: Увеличьте значение синего (B) и уменьшите красный (R).

Почмой мой RGB-цвет выглядит иначе на телефоне и мониторе? Разные устройства имеют разную калибровку экрана и цветовые охваты. sRGB — это попытка стандартизировать отображение, но идеального совпадения добиться сложно. Для критически важных цветов используйте эталонные мониторы и проверяйте дизайн на нескольких устройствах.

Что лучше использовать в CSS: RGB или HEX? Это вопрос удобства. HEX короче и привычнее для статических цветов. RGB (или современный rgb() без запятых) удобнее, если вы используете CSS-переменные или хотите динамически менять прозрачность через rgba() или opacity. Браузеры обрабатывают их одинаково.