Что CSS грядущий нам готовит? Часть пятая: rgba и hsla

Сегодня мы рассмотрим сразу два свойства - rgba и hsla. Данные свойства – производные от rgb и hsl (hsl, к слову, до сих пор не поддерживается в IE), и единственное отличие в них – это четвёртый параметр, отвечающий за прозрачность.
Возможно, вы спросите: зачем использовать эти свойства, если есть opacity, которое худо-бедно поддерживается большинством браузеров?


Вот два блока.
Они выглядят совершенно одинаковыми.

Добавляем текст:
Этот блок не справился с прозрачностью текста...
В отличие от этого блока!

И видим, что в первом блоке текст также стал полупрозрачным.

Для решения этой проблемы есть три варианта:

1. Использование полупрозрачного PNG вместо фона.

В этом примере используется полупрозрачный PNG.
Плюсы: Кроссбраузерность.
Минусы: В IE 6 требует допиливания с помощью AlphaImageLoader.


2. Подложка прозрачного блока под основной блок.

В этом примере используется подложка со свойством opacity.
Подробнее рассматривается здесь.
Плюсы: Без дополнительных изображений, возможность использовать плагин jQuery.
Минусы: Без JS размер подложки будет не зависящим от размеров основного блока.


3. Свойство rgba.

В этом примере используется свойство rgba.
Плюсы: Самое лаконичное и простое решение.
Минусы: Не поддерживается в IE.


Сегодня мы рассмотрим последний вариант.
В данном свойстве сначала перечисляются цвета (красный, зелёный и синий, что следует из названия), а затем идёт параметр alpha, который и будет определять прозрачность (от 0 до 1).
rgba(250, 99, 163, 0.6)
rgba(100, 179, 249, 0.4)
rgba(0, 0, 0, 0.2)

При необходимости можно использовать hsla, где используются тон (от 0 до 360), насыщенность (от 0% до 100%) и светлота (от 0% до 100%).
hsla(0, 80%, 50%, 0.6)
hsla(120, 80%, 50%, 0.4)
hsla(240, 80%, 50%, 0.2)

Конечно, rgba и hsla можно использовать не только для фона, но и для текста, границ и всего, к чему можно применить атрибут color.

Итог

Если бы не IE, то rgba и hsla можно было использовать уже сейчас для решения многих повседневных задач.
Хотя при желании для IE можно воспользоваться первым или вторым способом, скорее всего усилия не стоят ожидаемого результата.
Лично я так и буду использовать первый способ. По крайней мере, до тех пор, пока IE (до 8 версии включительно) не уйдет в небытие :)


Комментарии

24 сентября 2010, 16:44 (Ответить)
Очень наглядно у Вас все показано, возьму себе на заметку подобный стиль публикации.

По поводу IE, его тоже можно приручить через filter:progid:DXImageTransform.Microsoft.gradient

Подробнее у меня в статье про «CSS RGBa или как бы еще задать прозрачность фона элемента» www.aimweb.ru/css/css-rgba-opacity/
24 сентября 2010, 17:42 (Ответить)
, спасибо.
Про filter:gradient я уже писала (recens.ru/css/css3_gradient.html), но о таком способе применения не думала.
Можно мне добавить это решение в статью? (Разумеется, со ссылкой на вас.)
28 сентября 2010, 9:29 (Ответить)
Конечно добавляйте, ваша воля.
28 сентября 2010, 9:35 (Ответить)
Спасибо, добавлю в скором времени.
5 июня 2011, 20:43 (Ответить)
Спасибо автору, хороший пост.
14 июня 2011, 21:58 (Ответить)
Один из своих сайтов сделал на шаблоне от "Template Monster" - красивые эффекты на плагине roundabout.js и красиво организованные цветные бордюры у галереи, но ie8 не поддерживает rgba css. Радуга красок на Chrome and Firefox у ie превращается в серость ... Как уже надоели "ослики" из microsoft и ... yandex.

Добавить комментарий