Цвет

До появления CSS3 было три типа цветовых форматов: шестнадцатеричный (и краткий шестнадцатеричный), формат rgb() и поименованные цвета. В CSS3 добавляется поддержка HSL, HSLA, RGBA и ряда других типов задания цвета.

Форматы RGB, RGBA и шестнадцатеричный цветовой формат используют значения для красного, зеленого и синего цветов. Похожие на «фотошоповский» формат задания цвета HSB (hue, saturation, brightness — тон, насыщенность, яркость) форматы HSL и HSLA используют в качестве значений тон (hue), насыщенность (saturation) и яркость (light). Форматы RGBA и HSLA используются для объявления альфа-прозрачности выбранного цвета.

Шестнадцатиричные значения #RRGGBB (#RGB)

.hex {
    color: #ef1a9d;
    background-color: #ddd; /* краткая форма */
}
			

Для задания цветов используются числа в шестнадцатеричном коде.

Чтобы не возникало путаницы в определении системы счисления, перед шестнадцатеричным числом ставят символ решетки #. Каждый из трех цветов — красный, зеленый и синий — может принимать значения от 00 до FF. Таким образом, обозначение цвета разбивается на три составляющие #rrggbb, где первые два символа отмечают красную компоненту цвета, два средних — зеленую, а два последних — синюю. Допускается использовать сокращенную форму вида #rgb, где каждый символ следует удваивать. Так, запись #fe0 следует расценивать как #ffee00.

Все браузеры поддерживают все шестнадцатеричные значения как в кратком, так и в развернутом варианте.

По названию

Браузеры поддерживают некоторые цвета по их названию.

Нет смыла их приводить здесь, так как список уже не маленький. Да и каждая новая спецификая CSS добавляет новые цвета(а точнее придумывает им названия). И ещё я не рекомендую Вам использовать цвета по их названию, потому что в стандарте неоговорено как имено должен отображаться цвет если ипспользуется его названия.

Синтаксис rgb()

Вместо использования для задания цвета шестнадцатеричных значений для смеси красного, зеленого и синего цветов можно использовать значения в виде десятичных чисел или процентного отношения.

.rgb {
    color: rgb(0, 125, 35);
    background-color: rgb(10%, 37%, 78%); /* проценты тоже допустимы */
    /* НО СМЕСЬ ПРОЦЕНТОВ И ЧИСЕЛ НЕДОПУСТИМА */
    border: thin solid rgb(0, 90%, 33); /* ошибка */
}
			

Тон, насыщенность, яркость: HSL()

Другим появившимся относительно недавно выбором является HSL. Его ввели, чтобы дополнить существующую систему RGB: HSL позволяет совместить тон (hue), насыщенность (saturation) и светлоту (lightness).

HSL упрощает выбор нужных цветов, так как разработчик описывает оттенок, который либо ярче, либо темнее, путем увеличения или уменьшения других значений (в сравнении с базовым оттенком).

Цветовой круг

Синтаксис hsl() выглядит так же, как и синтаксис rgb(), но вместо применения значений для красного, зеленого и синего цветов значения, устанавливающие цвет, варьируются от 0 до 359, насыщенность и яркость задаются в процентах, при этом нормальной яркостью считается 50 %.

Тон

Для того чтобы определить тон (Hue) нужно указать градус поворота (от 0° до 360°) цветового спектра замкнутого в цветовой круг.

Имеется ввиду замкнутая радуга в круг в которой красный всегда ориентирован на север и равен 0 градусам (ну и 360° тоже), 120 градусов это зелёный, 240° синий - это основные три цвета которые, смешиваясь, образуют ещё три дополнительных 60° жёлтый 180° голубой и 300° фиолетовый. Ну а между этими шестью основными и дополнительными цветами расположены все остальные оттенки цветового спектра.

Цветовой круг ориентированный на 120 градусов(зелёный)

Насыщенность

Второе значение цветовой модели HSL определяет насыщенность(Saturation) выбранного нами оттенка и указывается в процентах в диапазоне от 0% до 100%. Чем ближе данное значение к 100% тем цвет выглядят более чисто и "сочно" и наоборот если насыщенность стремится к 0% то цвет "линяет" и становится серым.

Светлота

Светлота или яркость (Lightness) это третий параметр HSL. Точно так же как и насыщенность указывается в процентах. Чем выше процент, тем ярче становится цвет. Крайние значения 0% и 100% будут обозначать соответственно чёрный (полное отсутствии света) и белый (засвеченный или очень-очень яркий) цвета, причём неважно, какой оттенок из цветового круга был выбран изначально. Оптимальное значение яркости цвета равняется 50%(фактический тон).

hsl(0, 100%, 50%);
hsl(120, 50%, 50%);
hsl(180, 100%, 100%)
hsl(240, 100%, 0%)
hsl(360, 50%, 50%)

Прозрачность и непрозрачность

С приходом CSS3 появился еще один уровень управления цветами, предоставивший нам возможность накладывать полупрозрачные и непрозрачные эффекты на объекты.

Непрозрачность (Opacity)

Несмотря на то, что непрозрачность появилась только в CSS3, она поддерживалась браузерами и ранних версий.

Значение 0 соответствует полной прозрачности элемента, а 1, наоборот — его непрозрачности.

.opcity {
    color: rgb(255, 255, 255);
    background-color: black;
    opacity: 0.5; /* полупрозрачный */
}
				
opacity: 1
opacity: 0.75
opacity: 0.5
opacity: 0.25
opacity: 0.05
Пример
Пример
Пример
Пример

Прозрачность (Transparency)

Новыми в CSS3 является формат RGBA, HSLA. Они похожи на формат RGB и HSL, но с добавлением альфа компонента(канала), с помощью которого можно задавать уровень прозрачности.

Первые три значения по-прежнему используются для задания цветов. Четвертое значение задает степень прозрачности. Значение 1 означает полную непрозрачность, а значение 0 — полную прозрачность, значение 0.5 означает 50%-ную прозрачность. В качестве значения используется любое число с плавающей точкой между 0 и 1, включая и сами эти числа.

.rgba {
    color: rgba(10, 134, 67, 0.5);
}
.hsla {
    color: hsla(210, 13.3%, 73.3%, 0.5);
}
				
rgba(10, 134, 67, 0.5)
hsla(210, 13.3%, 73.3%, 0.5)
rgba(170, 187, 204, 0.2)

currentColor

Предположим, есть цветовая схема, как правило требующая использования определенного цвета в нескольких свойствах. Если вы захотите изменить базовый цвет темы, вам нужно будет изменить все вхождения данного цвета в таблице стилей.

Но если бы мы, к примеру, могли определить значение цвета в одном месте и использовать его в качестве своего рода "переменой" в таблице стилей. И вдруг, спустя какое-то время нам захочется изменить этот цвет, нужно будет изменить значение этой переменной, и все значения изменятся автоматически.

Начиная с 2014 года в CSS появилось новое ключевое слово, которое практически аналогично переменной - currentColor.

Ключевое слово currentColor похоже на переменную CSS с некоторыми отличиями: вы можете использовать currentColor только в тех свойствах, которые требуют цвет в качестве значения; если свойство не принимает цвет в качестве значения, оно не будет работать с currentColor.

Далее в примерах показаны свойства, принимающие currentColor в качестве значения.

.expmle {
    box-shadow: inset 2px 2px 3px currentColor;
    background-color: currentColor; /* not a good idea! */
}
			

Другое отличие между currentColor в том, что вы не можете присвоить currentColor значение. Значением currentColor является текущий цвет элемента, т.е. текущее значение свойства color. Название currentColor в этом случае отражает суть.

Так, если мы вернемся к предыдущему примеру, currentColor устанавливает цвет тени таким же, как текущее значение свойства color. Если для элемента не задано свойство color, оно будет наследоваться от родителя. Если ни у одного из родителей не задано свойство color — будет использоваться значение по умолчанию, в большинстве браузеров это черный цвет.

Другими словами: ключевое слово currentColor позволяет в свойствах элементов наследовать значение свойства color.

Для свойств, которые уже наследуют значение свойства color, ключевое слово currentColor не будет полезно.
Практическое применение currentColor

Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил, что он у себя в постели превратился в страшное насекомое. Лежа на панцирнотвердой спине, он видел, стоило ему приподнять голову, свой коричневый, выпуклый, разделенный дугообразными чешуйками живот, на верхушке которого еле держалось готовое вот-вот окончательно сползти одеяло. Его многочисленные, убого тонкие по сравнению с остальным телом ножки беспомощно копошились у него перед глазами. «Что со мной случилось?» – подумал он. Это не было сном. Его комната, настоящая, разве что слишком маленькая, но обычная комната, мирно покоилась в своих четырех хорошо знакомых стенах. Над столом, где были разложены распакованные образцы сукон – Замза был коммивояжером, – висел портрет, который он недавно вырезал из иллюстрированного журнала и вставил в красивую золоченую рамку. На портрете была изображена дама в меховой шляпе и боа, она сидела очень прямо и протягивала зрителю тяжелую меховую муфту, в которой целиком исчезала ее рука. Затем взгляд Грегора устремился в окно, и пасмурная погода – слышно было, как по жести подоконника стучат капли дождя – привела его и вовсе в грустное настроение. «Хорошо бы еще немного поспать и забыть всю эту чепуху», – подумал он, но это было совершенно неосуществимо, он привык спать на правом боку, а в теперешнем своем