Как записать цвет в CSS
Любое свойство, которое принимает цвет (color, background-color, border-color, тени, fill в SVG), принимает одни и те же форматы. Первые четыре образца это один и тот же синий, записанный четырьмя способами, а пятый это близкий к нему именованный цвет:
| Формат | Пример | Лучше всего для |
|---|---|---|
| Именованный | tomato, rebeccapurple | Быстрых проверок и прототипов |
| Hex | #2563eb, #25e | Копирования из инструментов дизайна |
rgb() | rgb(37 99 235) | Добавления прозрачности, работы со значениями RGB |
hsl() | hsl(221 83% 53%) | Оттенков и тонов одного цвета |
oklch() | oklch(55% 0.2 262) | Палитр с равномерной воспринимаемой светлотой |
| Ключевые слова | transparent, currentColor | Смотрите разделы ниже |
Hex-цвета
Hex-цвет это # и затем красный, зеленый и синий, каждый двумя шестнадцатеричными цифрами от 00 до ff. Еще три формы это сокращения или расширения:
#rgb: каждая цифра удваивается, поэтому#25eэто#2255ee.#rrggbbaa: последняя пара это альфа, поэтому#2563eb80непрозрачен примерно на 50%.#rgba: короткая форма с альфой.
Регистр в hex не важен: #2563EB и #2563eb это один цвет.
rgb() и rgba()
rgb() принимает красный, зеленый и синий от 0 до 255 (или от 0% до 100%). Необязательное четвертое значение после косой черты это альфа, от 0 (невидимый) до 1 или от 0% до 100%.
color: rgb(37 99 235); /* modern space syntax */
color: rgb(37 99 235 / 50%); /* half transparent */
color: rgba(37, 99, 235, 0.5); /* older comma syntax, same result */
rgba() и rgb() теперь одна и та же функция: обе принимают оба синтаксиса и необязательную альфу. Старый код использует rgba(), когда нужна прозрачность, и он продолжает работать.
hsl(): самый удобный для настройки формат
hsl() описывает цвет так, как о нем думают люди: тон с цветового круга, насыщенность и светлота. Сохраните тон и меняйте светлоту, и получится целая шкала:
Первый ряд сохраняет тон 221 и насыщенность 83% и меняет только светлоту. Второй ряд обходит цветовой круг с одинаковыми насыщенностью и светлотой.
Прозрачность: альфа-канал и opacity
Альфа-канал делает прозрачным один цвет. opacity делает прозрачным весь элемент, включая текст и дочерние элементы:
transparent это ключевое слово для полностью прозрачного черного, rgb(0 0 0 / 0). Это фон по умолчанию у большинства элементов.
currentColor
currentColor равен собственному color элемента. У кнопки, где рамка, иконка и текст используют его, одно объявление меняет все сразу:
.button {
color: #16a34a;
border: 2px solid currentColor;
}
.button svg { fill: currentColor; }
У рамок currentColor и так стоит по умолчанию, поэтому border: 2px solid без цвета совпадает с текстом.
Попробуйте любой цвет
Введите цвет в любом формате. Браузер разберет его и покажет вычисленное значение; невалидный цвет оставляет образец без изменений.
Попробуйте tomato, #0f0, #2563eb80, rgb(0 0 0 / 25%), oklch(70% 0.15 150) и color-mix(in srgb, #2563eb, white 50%).
Новые цветовые функции
oklch(L C H): светлота, хрома и тон в пространстве, устроенном так, что одинаковая светлота выглядит одинаково светлой. В палитрах, построенных в нем, меньше грязных промежуточных оттенков, чем в HSL.color-mix(in srgb, A, B 30%): смешивает два цвета. Сwhiteилиblackдает светлые и темные оттенки из одного фирменного цвета и работает с CSS-переменными:color-mix(in srgb, var(--brand), white 80%).
Обе работают в актуальных Chrome, Firefox и Safari. Храните фирменные цвета в переменных CSS, чтобы выбранные форматы жили в одном месте.
Частые ошибки
- Нет
#у hex-цвета.color: 2563ebневалидно и игнорируется. opacity, чтобы сделать фон прозрачным. Текст тоже становится бледным. Используйте цвет с альфой.- Смешанные разделители в современном синтаксисе.
rgb(37 99, 235)невалидно: используйте либо только пробелы, либо только запятые. - Надежда, что именованный цвет совпадет с макетом.
royalblueэто не#2563eb. Копируйте точный код. - Оценка контрастности на глаз. Проверяйте цвет текста на фоне инструментом проверки контрастности; 4.5:1 это минимум для основного текста.
Часто задаваемые вопросы
Какие форматы цвета поддерживает CSS?
Именованные цвета (red), hex (#ff0000), rgb(), hsl(), hwb(), lab(), lch(), oklab(), oklch() и color(), плюс ключевые слова transparent и currentColor. Hex, rgb и hsl покрывают почти всю повседневную работу.
Чем rgb отличается от rgba?
Уже ничем. rgba() это старый псевдоним: современный CSS позволяет rgb() принимать альфа-значение (rgb(37 99 235 / 50%)), и во всех актуальных браузерах обе функции принимают одинаковые аргументы.
Как сделать цвет прозрачным в CSS?
Добавьте альфа-канал: rgb(0 0 0 / 50%), hsl(221 83% 53% / 0.5) или 8-значный hex вроде #2563eb80. В отличие от opacity, это делает полупрозрачным только один цвет, а не весь элемент.
Что такое HSL в CSS?
Hue, saturation, lightness: тон, насыщенность, светлота. Тон это угол на цветовом круге (0 красный, 120 зеленый, 240 синий), насыщенность отвечает за яркость цвета, а светлота идет от 0% черного до 100% белого. С ним легко получать более светлые и темные оттенки: меняется только последнее число.
Что означает currentColor?
Это значение свойства color элемента. Если использовать его для рамки или заливки SVG, они автоматически следуют за цветом текста.