CSS-фильтры: что к чему и как

В css разбираюсь уже около года, но как-то не доводилось сталкиваться с фильтрами. И вот сегодня обратил на них внимание и хочу сделать для себя и для вас пометку о таком удивительном свойстве.

И так, css фильтры могут применяться к любым видимым элементам на странице. В скобках указывается «сила действия» параметра. Можно использовать одновременно несколько параметров в фильтре. Но есть одно НО! CSS Filters добавляют отличные визуальные эффекты, но в то же время негативно влияют на производительность вашего веб-сайта. Важно понимать что они делают и как это влияет на производительность. Большинство фильтров работают довольно быстро на любом устройстве поддерживающем их. Однако фильтры blur и drop-shadow, использующие эффект размытости, работают намного медленнее остальных.

Пример: div { filter: grayscale(100%); }

Рассмотрим возможные параметры:
grayscale() — делает объект ч/б. В скобках указываем значение как в процентах (0% — 100%), так и в десятичных дробях (0 — 1).
sepia() — получаем сепию. В скобках указываем значение как в процентах (0% — 100%), так и в десятичных дробях (0 — 1).
saturate() — насыщенность цвета.
hue-rotate() — меняем цвета изображения в зависимости от заданного угла. Угол поворота определяет на сколько изменится данный цвет в цветовом круге от красного до фиолетового. Значение указываем в градусах (0deg — 360deg).
invert() — инвертирует цвета. Значение указываем как в процентах (0% — 100%), так и в десятичных дробях (0 — 1).
opacity() — прозрачность. Задает прозрачность элемента. Значение задается как в процентах (0% — 100%), так и в десятичных дробях (0 — 1). Данный фильтр работает так же как и CSS свойство opacity. Единственное различие в том, что фильтр поддерживает аппаратное ускорение, а свойство нет. Таким образом применение фильтра даст большую производительность.
brightness() — яркость изображения. Значение указываем как в процентах (0% и больше), так и в десятичных дробях (0 и больше).
contrast() — контрастность изображения. Значение указываем как в процентах (0% и больше), так и в десятичных дробях (0 и больше).
blur() — эффект размытости. Значение указываем в пикселях (px).
drop-shadow(x, y, радиус, цвет) — тень объекта аналогично CSS свойству box-shadow, но только фильтр имеет поддержку аппаратного ускорения. Значения задаются аналогично значениям CSS аналога. Пример 1: drop-shadow(16px 16px 20px black); Пример 2: filter: drop-shadow(inset 0 0 2rm blue);
url(ссылка на SVG фильтр) — можно создавать собственные фильтры с помощью SVG элемента filter и ссылаться на них из CSS. Каждый фильтр имеет свой id. Пример SVG: ... Пример CSS: div { filter: url(#foo); }

custom (coming soon) — в скором будущем станет доступна возможность создавать свои собственные фильтры с помощью CSS Shaders.

Большинство CSS фильтров сейчас доступны для использования в браузере FireFox и браузерах на движке WebKit. В скором времени надеемся увидеть поддержку в браузерах Opera и IE10. Так как спецификация все еще находится в разработке, приходится использовать вендорные префиксы. Для WebKit -webkit-filter, для FireFox префикс не требуется.

Предыдущая статья:



Оставить комментарий