Цветовая модель HSL в CSS 3.
Дизайнер: — Цвет фона на плакате каким будет?
Клиент: — А какие цвета у вас есть?
Дизайнер: — Три: красный, зелёный и синий остальные — оттенки
Клиент: — Странно, в прошлый раз мне оранжевым напечатали..
Глава 4
Ранее в ходе обучения HTML и CSS 2.1 мы с Вами уяснили что цвет того или иного элемента сайта может быть определён следующими способами:
- Именным значением, например: red — красный.
- Значением цвета RGB, например: RGB(255,0,0) — опять таки красный.
- Шестнадцатеричным значением цвета RGB, например: #ff0000 — всё тот же красный.
Об этих методах определения цвета я писал в главе «Цвет и фон» учебника CSS поэтому повторятся не стану а расскажу о ещё одном способе определения цвета, который предлагает спецификация CSS 3.
В CSS 3 вошёл ещё один способ определения цвета с помощью
Оттенок.
Для того чтобы определить тон (Hue) нужно указать градус поворота (от 0° до 360°) цветового спектра замкнутого в цветовой круг — во сказанул!! )) В общем, смотрите на рисунок там наглядно показано откуда берётся этот угол.. Имеется, значит, радуга замкнутая в круг в котором красный всегда ориентирован на север и равен 0 градусам (ну и 360° тоже), 120 градусов это зелёный, 240° синий — это основные три цвета которые, смешиваясь, образуют ещё три дополнительных 60° жёлтый 180° голубой и 300° фиолетовый.. Ну а между этими шестью основными и дополнительными цветами расположены все остальные оттенки цветового спектра.
Насыщенность.
Второе значение (Saturation) цветовой модели HSL определяет насыщенность выбранного нами оттенка и указывается в процентах в диапазоне от 0% до 100%. Чем ближе данное значение к 100% тем цвет выглядят более чисто и «сочно» и наоборот если насыщенность стремится к 0% то цвет «линяет» и становится серым.
Светлота.
Светлота или яркость (Lightness) это третий параметр HSL. Точно так же как и насыщенность указывается в процентах.. чем выше процент, тем ярче становится цвет. Крайние значения 0% и 100% будут обозначать соответственно чёрный (отсутствие света) и белый (засвеченный) цвета, причём неважно, какой оттенок из цветового круга был выбран изначально. Оптимальное значение яркости цвета равняется 50%.
Такая вот теория.. теперь к практике..
Как обычно покажу на примере:
<!DOCTYPE html><html>
<head>
<meta charset=»utf-8″>
<title>Цвет HSL</title>
<style type=»text/css»>
body{
background-color:hsl(120,10%,50%);
color:hsl(60,100%,50%)
}
. blok1 {background-color:hsl(0,0%,0%)}
.blok2 {background-color:hsl(0,0%,100%)}
.blok3 {background-color:hsl(187,61%,54%)}
.blok4 {background-color:hsl(300,100%,70%)}
.blok5 {background-color:hsl(0,100%,50%)}
.blok6 {background-color:hsl(240,100%,50%)}
</style>
</head>
<body>
<div>Блок 1</div>
<div>Блок 2</div>
<div>Блок 3</div>
<div>Блок 4</div>
<div>Блок 5</div>
<div>Блок 6</div>
</body>
</html>
смотреть пример
Альфа каналы.
RGBA
На ряду со свойством opacity определяющего степень прозрачности элемента в CSS 3 появился так называемый альфа канал, который позволяет сделать цвет прозрачным непосредственно при его указании.
Так у уже знакомого нам способа определения цвета RGB (Red, Green, Blue ) появляется четвёртое значение RGBA (Red, Green, Blue, Alpha) это и есть пресловутый альфа канал который определяет степень прозрачности. Степень прозрачности, точно так же как и для свойства opacity определяется значением от 0 до 1 где 0 полностью прозрачный а 1 непрозрачный вовсе.
Пример:
<!DOCTYPE html><html>
<head>
<meta charset=»utf-8″>
<title>Цвет RGBA</title>
<style type=»text/css»>
body{
background-image: url(graphics/fon.gif)
}
.blok1{background-color:rgba(255,0,0,0.1)}
.blok2{background-color:rgba(255,0,0,0.5)}
. blok3{background-color:rgba(255,0,0,1)}
</style>
</head>
<body>
<div>Блок 1</div>
<div>Блок 2</div>
<div>Блок 3</div>
</body>
</html>
смотреть пример
HSLA
Цветовая модель HSLA это тоже самое, что и HSL только с добавлением альфа канала. Альфа канал в HSLA аналогичен с только что разобранным альфа каналом в RGBA, поэтому повторятся, не буду просто покажу пример:
<!DOCTYPE html><html>
<head>
<meta charset=»utf-8″>
<title>Цвет HSLA</title>
<style type=»text/css»>
body{
background-image: url(graphics/fon.gif)
}
. blok1{background-color:hsla(120,100%,50%,0.1)}
.blok2{background-color:hsla(120,100%,50%,0.5)}
.blok3{background-color:hsla(120,100%,50%,1)}
</style>
</head>
<body>
<div>Блок 1</div>
<div>Блок 2</div>
<div>Блок 3</div>
</body>
</html>
смотреть пример
Считается, что преимуществом цветовой схемы HSL перед RGB являются более природные естественные цвета так как формат RGB был создан специально для электроннолучевых трубок.. ну не знаю.. во первых лично у меня не столь придирчивый глаз, а во вторых какая разница ведь всё равно в итоге цвет на странице будет показан с помощью электроннолучевой трубки — ну или её аналога!? то есть в определённом сочетании красного, зелёного и синего цвета т.
А вот что мне нравится в HSL так это то, что цвет заданный таким способом интуитивно понятен, то есть, взглянув на цифры, допустим hsl(60,100%,50%) можно сразу же представить каким приблизительно в итоге будет цвет достаточно просто держать в голове цветовой круг (радугу) и знать теорию, о которой мы говорили выше. А вот с RGB цветом ничего, как правило, непонятно до тех пор, пока в фотошопе или ещё где-нибудь не посмотришь на цифры сочетания красного, зелёного и синего.
Форматы HSL, HSLA и RGBA
воспринимают версии браузеров начиная с: IE 9.0, Opera 10.0 Firefox 3.0 … А как быть со старыми версиями браузеров решать уже Вам. Однако хочу отметить, что одному и тому же элементу цвет можно задать несколькими способами.Ну например:
. blok {
background-color:rgb(255,0,0)
background-color:rgba(255,0,0,0.5)
}При таком раскладе цвет в старых браузерах хоть и не будет полупрозрачным , но зато будет правильным.. конкретно в этом случае красным.
[CSS] — Как установить прозрачность с помощью линейного градиента в CSS
Узнайте, как использовать линейный градиент и rgba для настройки прозрачности элемента в CSS.
👩💻 Технический вопрос
Спросил 4 месяца назад в CSS by Mariana
как установить прозрачность фона с линейным градиентом
HTML линейный градиент RGBA прозрачность элемент
👩💻 Инструкции по коду HTML, CSS и JavaScript
Спросил 9 часов назад в CSS by Anamarija
Переместите смайлики друг на друга, используя относительное позиционирование
CSS позиционирование родственник лучшее свойство смайлики
👩💻 Технический вопрос
Спросил 12 дней назад в CSS от Ники
заполнение кнопок
CSS кнопка набивка веб-разработка
👩💻 Технический вопрос
Спросил 12 дней назад в CSS by Niki
как сделать размытую тень вокруг изображения
CSS коробка-тень изображение эффект размытия эффект распространения
👩💻 Технический вопрос
Спросил 12 дней назад в CSS от Ники
как изменить цвет фона?
цвет фона CSS веб-дизайн дизайн веб-страницы значения цвета
👩💻 Технический вопрос
Спросил 12 дней назад в CSS Сара
Когда следует использовать переменные css?
УС переменные многоразовый Глобальный обновление
👩💻 Технический вопрос
Спросил 12 дней назад в CSS Саба
как изменить непрозрачность фона?
УС фон непрозрачность
👩💻 Технический вопрос
Спросил 13 дней назад в CSS от Ciara
какие продвинутые селекторы CSS
продвинутые селекторы CSS селектор братьев и сестер селектор атрибутов n-й дочерний селектор
👩💻 Технический вопрос
Спросил 13 дней назад в CSS от Лунгело
тип направления гибкости в css
CSS флексбокс flex-направление ряд столбец
👩💻 Технический вопрос
Спросил 13 дней назад в CSS by Saba
как сделать абсолютную коробку отзывчивой? он не отвечает ширине: 100%
абсолютная позиция отзывчивый процентные значения относительное положение
👩💻 Технический вопрос
Спросил 14 дней назад в CSS Дженнифер
что такое высота строки
высота строки Свойство CSS вертикальное пространство текст
👩💻 Технический вопрос
Спросил 14 дней назад в CSS от Jasmine
как отображать что-то еще при наведении курсора на кнопку?
УС парить показать свойство
👩💻 Технический вопрос
Спросил 15 дней назад в CSS by Charlotte
Какие есть варианты выравнивания содержимого?
УС флексбокс оправдать содержание центральные элементы
👩💻 Технический вопрос
Спросил 15 дней назад в CSS by Confidence
как изменить ширину контейнера
контейнер ширина Свойство CSS процент
👩💻 Технический вопрос
Спросил 16 дней назад в CSS by Lungelo
css удалить подчеркивание из ссылки
CSS связь украшение текста подчеркнуть стиль
👩💻 Технический вопрос
Спросил 16 дней назад в CSS по Лунгело
в css как разместить элементы в списке рядом друг с другом, а не друг под другом
CSS список в соответствии встроенный блок поплавок
👩💻 Технический вопрос
Спросил 17 дней назад в CSS от Unisha
можете ли вы объяснить положение относительного элемента CSS?
УС позиция родственник вершина левый макет
👩💻 Технический вопрос
Спросил 18 дней назад в CSS by OFFA
как использовать медиа-запрос
медиа-запрос CSS техника Отзывчивый дизайн разрешение экрана
👩💻 Технический вопрос
Спросил 18 дней назад в CSS Рикке В.
Что такое линейный градиент?
линейно-градиентный фон веб-дизайн эффект градиента CSS-функция
👩💻 Технический вопрос
Спросил 18 дней назад в CSS Рикке В.
где их использовать?
УС единицы родственник эм
👩💻 Технический вопрос
Спросил 19 дней назад в CSS Мишель
Почему класс «Сегодня» не помещен непосредственно под класс «Визуальный»? Как мне сделать это так? .weatherAppBody { дисплей: блок; верхнее поле: 100 пикселей; поле справа: 300 пикселей; нижняя граница: 100px; поле слева: 300px; отступ: 80px 100px; } ч2 { размер шрифта: 20px; выравнивание текста: по левому краю; поле: 0 авто; плыть налево; } h3 { вес шрифта: 100; } .
текущая информация { отображение: встроенный блок; выравнивание текста: по левому краю; поле: 0 авто; } .localInfo { стиль списка: нет; отображение: встроенный блок; } .сегодня { выравнивание текста: вправо; поле сверху: 0px; поле справа: 0px; поплавок: справа; } .визуальный { стиль списка: нет; поплавок: справа; поле сверху: 0px; поле справа: 0px; ясно: оба; } .Полная неделя { размер шрифта: 20px; положение: нижнее; внизу: 0px; нижняя граница: 0px; }
УС флексбокс заказ имущества
👩💻 Технический вопрос
Спросил 19 дней назад в CSS Рикке В.
что такое непрозрачность
CSS непрозрачность прозрачность
👩💻 Технический вопрос
Спросил 19 дней назад в CSS Мишель
Когда я захожу в
и помещаю фоновое изображение, как мне изменить его высоту и ширину?
фоновое изображение размер фона Свойство CSS
👩💻 Технический вопрос
Спросил 19 дней назад в CSS Мишель
Как сделать текст-заполнитель в поле ввода полужирным?
УС поле ввода текст-заполнитель полужирный
👩💻 Технический вопрос
Спросил 20 дней назад в CSS Стейси
как остановить повторение фонового изображения? Я хочу, чтобы он занимал весь экран.
фоновое изображение Свойство CSS фоновый повтор размер фона
👩💻 Технический вопрос
Спросил 21 день назад в CSS Честер
как переместить полосу прокрутки
CSS полоса прокрутки стиль
👩💻 Технический вопрос
Спросил 22 дня назад в CSS от Vennesa
как использовать высоту строки
CSS высота линии свойство регулировка
👩💻 Технический вопрос
Спросил 22 дня назад в CSS от Vennesa
что делает box-shadow?
УС коробка-тень HTML-элемент свойство эффект
👩💻 Технический вопрос
Спросил 22 дня назад в CSS Элизабет
как убрать фиолетовый цвет с гиперссылки?
ссылка цвет гиперссылка веб-дизайн Селектор CSS
👩💻 Технический вопрос
Спросил 22 дня назад в CSS Элизабет
что такое высота строки?
высота строки текст интервал веб-дизайн
👩💻 Технический вопрос
Спросил 22 дня назад в CSS Элизабет
как центрировать текст?
УС центр выравнивание текста начальная загрузка
👩💻 Технический вопрос
Спросил 22 дня назад в CSS Элизабет
Что такое свойство маржи?
УС маржинальное свойство HTML-элементы веб-дизайн
👩💻 Технический вопрос
Спросил 22 дня назад в CSS Элизабет
что такое маржа
маржа интервал HTML веб-разработка
👩💻 Технический вопрос
Спросил 25 дней назад в CSS by Francesca
радиус границы начинается в каком углу в CSS?
УС радиус границы углы
👩💻 Технический вопрос
Спросил 25 дней назад в CSS by EBONI
как убрать поля с элемента
CSS допуск Элемент
👩💻 Технический вопрос
Спросил 26 дней назад в CSS Татьяна
как кодировать страницу с фоновым изображением, которое адаптивно
фоновое изображение отзывчивый CSS медиа-запрос
👩💻 Технический вопрос
Спросил 26 дней назад в CSS Татьяна
как выровнять две кнопки по сторонам
CSS флексбокс выравнивание содержания кнопки
👩💻 Технический вопрос
Спросил 26 дней назад в CSS Татьяна
как раскрасить шрифт в навигационной панели
CSS панель навигации цвет шрифта
👩💻 Технический вопрос
Спросил 26 дней назад в CSS by Clarissa
Как изменить конкретное семейство шрифтов в синтаксисе
CSS семейство шрифтов синтаксис селектор
👩💻 Технический вопрос
Спросил 27 дней назад в CSS от Фоласайо
как добавить навигационный бургер на средний экран
навигация бургер меню медиазапросы отзывчивость
👩💻 Технический вопрос
Спросил 27 дней назад в CSS от Folasayo
как скрыть панель навигации для среднего экрана?
навигационная панель медиа-запрос Адаптивный дизайн
👩💻 Технический вопрос
Спросил 27 дней назад в CSS Флоренсия
как я могу центрировать css ul
CSS ул центр
👩💻 Технический вопрос
Спросил 27 дней назад в CSS от Alina
как сделать текст фиксированным
CSS текст фиксированная позиция окно просмотра прокрутка
👩💻 Технический вопрос
Спросил 27 дней назад в CSS от Фоласайо
какую утилиту CSS я могу использовать для увеличения моего изображения?
УС полезность изображение трансформировать шкала
👩💻 Технический вопрос
Спросил 27 дней назад в CSS by Soulinny
изменить размер шрифта меню код css
меню размер шрифта Свойство CSS Документация MDN
👩💻 Технический вопрос
Спросил 27 дней назад в CSS от Миган
как выровнять текст по вертикали внутри столбца сетки vw
выровнять по вертикали текст оч отзывчивый столбец сетки
👩💻 Технический вопрос
Спросил 27 дней назад в CSS by Meegan
Как вертикально выровнять текст внутри столбца
вертикальное выравнивание текст столбец Свойство CSS дисплей: гибкий выравнивание элементов: центр
👩💻 Технический вопрос
Спросил 27 дней назад в CSS by Meegan
Как заставить столбцы переключаться между 2 и 1 при изменении размера окна
CSS медиазапросы флексбокс Адаптивный дизайн
👩💻 Технический вопрос
Спросил 27 дней назад в CSS by Trang
почему мы не можем использовать text-align: center в css для центрирования изображения
выравнивание текста центрирование изображения элемент блочного уровня отображать поля
👩💻 Технический вопрос
Спросил 27 дней назад в CSS от Trang
как центрировать изображение
по центру изображение допуск флексбокс стиль
👩💻 Технический вопрос
Спросил 28 дней назад в CSS от Равнит
мой код не такой жирный, как хотелось бы
CSS вес шрифта стиль веб-дизайн
Просмотрите вопросы по программированию по темам: HTML CSS JavaScript Код ВС питон Реагировать Начальная загрузка Попутный ветер Джава PHP Node. js Рубин Идти .NET
прозрачность — Как определить эквивалентный непрозрачный цвет RGB для данного частично прозрачного цвета RGB на белом фоне
Я написал для этого инструмент: https://github.com/igrmk/blec. В вашем конкретном случае вы можете использовать его следующим образом:
blec white deadbeef
Last ef
— это шестнадцатеричное представление альфа-канала. Или вы можете использовать его так:
blec white deadbe:0.75
Указание непрозрачности в виде десятичной дроби.
Обратите внимание, что предлагаемая формула Y = 255 - P * (255 - X)
не совсем точна из-за гамма-коррекции. Точнее было бы 9(1/G) , где Y
— результирующее значение RGB-компоненты, X
— значение оверлейной RGB-компоненты, P
— его непрозрачность, G
— значение гаммы. Наиболее распространенное значение гаммы — 2,2. Причиной включения гамма-коррекции в формулу является перемещение компонентов в линейное пространство при расчете. Почти каждое пространство RGB, которое используется сегодня, интерпретирует компоненты цвета нелинейным образом, чтобы поместить больше информации о цвете в 8 бит. Исторически он был введен для компенсации нелинейности ЭЛТ-дисплеев.
Вот пример того, почему гамма-коррекция важна для смешивания. Давайте возьмем это красное изображение
и это синее изображение
Давайте возьмем первый полностью непрозрачный и установите непрозрачность второго изображения, равного оси x, как это
Теперь давайте смешаем их без гаммы. (гамма = 1)
Давайте включим гамма-коррекцию и сделаем то же самое (гамма = 2,2)
Как вы можете видеть, если мы не используем гамма-коррекцию, переход будет гораздо более локализованным. В центре явно более темные цвета. Если мы используем гамма-коррекцию, то переход и яркость становятся намного более плавными.
Последний градиент построен с использованием сглаживания.
Изображение содержит пиксели только двух цветов, но вероятность синего линейно увеличивается от 0 слева до 1 справа. Результат выглядит намного ближе к изображению с гаммой = 2,2 с точки зрения яркости и переходных цветов. Попробуйте посмотреть на это издалека. И это то, что вы, вероятно, ожидаете от смешивания двух цветов. Мы буквально смешиваем их, смешивая, как акварель в этом примере. Таким образом, гамма очень важна для смешивания, особенно когда непрозрачность близка к 0,5.
Давайте, наконец, сравним смешивание непрозрачного красного и синего с альфа 0,5, где эффект гамма-коррекции максимален.
В первом изображении гамма-коррекция не используется, во втором используется гамма 2,2, а в третьем используется дизеринг. Как видите, первый сильно отличается от двух других (если вы этого не видите, прочтите примечания ниже). Так что советую всегда использовать гамма-коррекцию. Если вы используете любой приличный редактор изображений, то, скорее всего, вы в безопасности, и гамма-коррекция включена по умолчанию.
Примечание 1: Чтобы сравнить дизеринг со смешиванием, вам нужно посмотреть на изображения в масштабе 100%, чтобы каждый пиксель изображения занимал ровно один пиксель экрана. Это почти никогда не происходит, если вы используете мобильный телефон или дисплей Retina. Если вы смотрите на изображения в другом масштабе, вероятно, вы смотрите на сглаженное изображение. Сглаживание может привести к очень неточным результатам, поскольку в данный момент оно не использует гамма-коррекцию. Я могу подтвердить это для Chrome 83 на Android 10 и для последней версии Safari на iOS 13. Думаю, для правильной работы требуется слишком много ресурсов. Таким образом, он эффективно уменьшает гамму дисплея примерно до 1,8, когда вы смотрите на очень контрастные зашумленные изображения.
Примечание 2: Не каждый дисплей хорошо откалиброван. Если вам кажется, что изображение с гаммой 2,2 и изображение с дизерингом дают разные цвета, у меня для вас плохие новости. Вы можете проверить гамму вашего монитора здесь http://web.mit.edu/jmorzins/www/gamma/adilger/gamma.html. Однако, если вы используете мобильное устройство, лучше использовать приложение, потому что сглаживание может привести к очень неточным результатам.