CSS фильтры изображений. CSS3 фильтры: изменяем изображения используя стили Функции и синтаксис CSS фильтров

  • 29.06.2020

Это возможно сделать средствами CSS без каких-либо скриптов и предварительной обработки. Да, технологии не стоят на месте:) Реализация очень простая и не требует даже использования в каком-либо виде популярного в наше время SVG.

Как перекрасить цвет шрифта на фото

Если внимательно читать MDN можно, примерно, понять режимы смешивания и увидеть различия между ними, хотя они практически все одинаковы. Наличие белого текста над изображением дает нам результат, который является инвертированным изображением, где текст перекрывает его. Для простых черно-белых изображений черный в исходном изображении становится белым, где у нас есть белый текст над ним, а белый в исходном изображении становится черным, когда над ним находится белый текст.

Для примера возьмем примитивный HTML код:

CSS
HTMLсайт

И добавим к нему еще примитивный CSS:

Background { background: url(super_cat.jpg); width:800px; height:450px; } h2 { color: #FFF; mix-blend-mode: difference; font: 900 120px/120px Arial; text-align: center } span { display:block; font-size:80px }

Отлично получилось даже без программы Photoshop! И текст, и изображение могут быть изменены, и эффект сохраняется без необходимости какого-либо JavaScript или каких-либо изменений в CSS или SV-масках. Но это подходит для простых изображений. С более сложными необходимо применять дополнительные фильтры и смешивать их.

Например мы можем добавить нашему h2 -тегу такой css-фильтр в помощь:

H2 { filter: invert(1) grayscale(1) contrast(9) }

Вариантов совместного использования фильтров ограничивает только ваша фантазия и вкус стиля.

Функция invert() инвертирует цвета в изображении. По своему действию похоже на превращение фотографии в негатив.

Синтаксис

filter: invert(<значение>);

Обозначения

Описание Пример
<тип> Указывает тип значения. <размер>
A && B Значения должны выводиться в указанном порядке. <размер> && <цвет>
A | B Указывает, что надо выбрать только одно значение из предложенных (A или B). normal | small-caps
A || B Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. width || count
Группирует значения. [ crop || cross ]
* Повторять ноль или больше раз. [,<время>]*
+ Повторять один или больше раз. <число>+
? Указанный тип, слово или группа не является обязательным. inset?
{A, B} Повторять не менее A, но не более B раз. <радиус>{1,4}
# Повторять один или больше раз через запятую. <время>#

Значения

Значение 0 оставляет изображение исходным. Значение 100% или 1 полностью инвертирует цвета картинки. Значения от 0% до 100% или от 0 до 1 инвертируют цвета частично.

Отрицательное значение не допускается. Пустое значение воспринимается как 0.

Песочница

img { filter: invert({{ playgroundValue }}% ); }

Пример

invert()

Результат данного примера показан на рис. 1.

Рис. 1. Инвертирование цвета. Слева - оригинал, справа фотография с фильтром

Примечание

Chrome до версии 53, Opera до версии 40 и Safari до версии 9.1 поддерживают свойство -webkit-filter .

Спецификация

Каждая спецификация проходит несколько стадий одобрения.

  • Recommendation (Рекомендация ) - спецификация одобрена W3C и рекомендована как стандарт.
  • Candidate Recommendation (Возможная рекомендация ) - группа, отвечающая за стандарт, удовлетворена, как он соответствует своим целям, но требуется помощь сообщества разработчиков по реализации стандарта.
  • Proposed Recommendation (Предлагаемая рекомендация ) - на этом этапе документ представлен на рассмотрение Консультативного совета W3C для окончательного утверждения.
  • Working Draft (Рабочий проект ) - более зрелая версия черновика после обсуждения и внесения поправок для рассмотрения сообществом.
  • Editor"s draft (Редакторский черновик ) - черновая версия стандарта после внесения правок редакторами проекта.
  • Draft (Черновик спецификации ) - первая черновая версия стандарта.

Браузеры

Браузеры

В таблице браузеров применяются следующие обозначения.

Описание

Настраивает параметры цвета или прозрачности элемента, также задаёт вращение.

Синтаксис

filter: progid:DXImageTransform.Microsoft.BasicImage(параметры)

Параметры

enabled Включает или выключает фильтр. Значение true разрешает использование фильтра, false запрещает. grayScale Цвета превращаются в оттенки серого. 1 — серые цвета, 0 — отображать исходные цвета. invert Инвертирует цвета элемента. 1 — инвертировать цвета, 0 — оставить исходные цвета. mask Устанавливает, что определённые цвета должны быть прозрачными. 1 — прозрачность меняется с помощью параметра maskColor , 0 — отображать исходные цвета. mascColor Устанавливает цвет, используемый как маска прозрачности содержимого элемента. Цвет задаётся в формате 0xAARRGGBB, где АА — это шестнадцатеричное значение прозрачности, RR — красная компонента, GG — зелёная компонента, BB — синяя компонента. mirror Зеркально отражает элемент. 1 — зеркально отобразить по горизонтали, 0 — оставить исходным. opacity Устанавливает значение прозрачности. 0 — полная прозрачность, 1.0 — непрозрачность элемента. rotation Вращает элемент. 0 — исходное положение, 1 — поворот на 90° по часовой стрелке, 2 — поворот на 180°, 3 — поворот на 270°. xray Цвета превращаются в оттенки серого с инвертированием цветов.

Параметры внутри фильтра перечисляются через запятую в любом порядке.

HTML5 CSS2.1 IE Cr Op Sa Fx

filter

Результат данного примера показан на рис. 1.

Рис. 1. Использование параметра xray

Браузеры

В IE6 и в IE7 фильтры применяются только для элементов, у которых установлено свойство .

Internet Explorer 9 не добавляет фильтры к элементам при печати документа.

CSS3 фильтры являются весьма интересным ответвлением от SVG, позволяющим изменять HTML-элементы и изображения, применяя фильтры размытия, яркости и многие другие. В этом уроке мы кратко рассмотрим, как именно они работают.

Как это работает?

Используя только CSS мы можем создавать некоторые довольно сложные эффекты. Они могут быть применены как к изображениям, так и к HTML-элементам. Свойство, которое используется для управления всеми этими эффектами - это filter .

filter: filter(value) ;

Как и следовало ожидать, для этого свойства требуется использование префикса браузера. Но на данный момент, только -webkit- (Chrome и Safari) является единственным движком браузеров, поддерживающим это свойство.

Webkit-filter: filter(value) ;
-moz-filter: filter(value) ;
-o-filter: filter(value) ;
-ms-filter: filter(value) ;

Фильтрация

Существует целый ряд фильтров, поэтому, чтобы получить более полное представление о каждом из них, давайте рассмотрим их по отдельности. Несколько фильтров могут быть применены к одному элементу (через пробел), например, brightness и blur :

filter: blur(5px ) brightness(0.5 ) ;

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

Я буду приводить фото c применением фильтра (первое фото) и результат работы фильтра в виде статичного изображения (второе фото), если вы используете браузер, который не поддерживает фильтры и не можете увидеть результат.

Размытие

Всегда хотели сделать гауссовское размытие для изображения или текста только при помощи одного CSS? С фильтрами вы это сможете! Размытие измеряется в пикселях, так что вы можете сделать что-то вроде этого:

filter: blur(5px ) ;
// Browser Specific
-webkit-filter: blur(5px ) ;
-moz-filter: blur(5px ) ;
-o-filter: blur(5px ) ;
-ms-filter: blur(5px ) ;

Яркость

Яркость измеряется от нуля до единицы, 1 - это полная яркость (белый цвет), а 0 - первоначальная яркость.

filter: brightness(0.2 ) ;
// Browser Specific
-webkit-filter: brightness(0.2 ) ;
-moz-filter: brightness(0.2 ) ;
-o-filter: brightness(0.2 ) ;
-ms-filter: brightness(0.2 ) ;

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

Насыщенность измеряется в процентах.

filter: saturate(50% ) ;
// Browser Specific
-webkit-filter: saturate(50% ) ;
-moz-filter: saturate(50% ) ;
-o-filter: saturate(50% ) ;
-ms-filter: saturate(50% ) ;

Поворот тона

Этот фильтр позволяет Вам изменять тон, повернув его (представьте себе колесо цветов, которые вы затем поворачиваете). Он измеряется в градусах.

filter: hue-rotate(20deg) ;
// Browser Specific
-webkit-filter: hue-rotate(20deg) ;
-moz-filter: hue-rotate(20deg) ;
-o-filter: hue-rotate(20deg) ;
-ms-filter: hue-rotate(20deg) ;

Контрастность

Констрастность, опять же, измеряется в процентах. 100% является значением по умолчанию, 0% позволит создать полностью черное изображение. Все, что более 100% добавляет контраст!

filter: contrast(150% ) ;
// Browser Specific
-webkit-filter: contrast(150% ) ;
-moz-filter: contrast(150% ) ;
-o-filter: contrast(150% ) ;
-ms-filter: contrast(150% ) ;

Инверсия

Также измеряется в процентах. Доступны значения от 0% до 100%. Как ни странно, на данный момент, webkit не поддерживает инверсии, если они меньше, чем 100%.

filter: invert (100% ) ;
// Browser Specific
-webkit-filter: invert (100% ) ;
-moz-filter: invert (100% ) ;
-o-filter: invert (100% ) ;
-ms-filter: invert (100% ) ;

Обесцвечивание

Опять же, указываете значение в процентах, на которое вы хотите обесцветить изображение. Доступны значения от 0% до 100%.

filter: grayscale(100% ) ;
// Browser Specific
-webkit-filter: grayscale(100% ) ;
-moz-filter: grayscale(100% ) ;
-o-filter: grayscale(100% ) ;
-ms-filter: grayscale(100% ) ;

Сепия

Я полагаю, это очень полезно, если вы хотите опубликовать что-то в Instagram. Хотя я также полагаю, вы не будете использовать CSS для этого. Во всяком случае, подобные оттенки серого и негатива, в сумме, позволят вам добавить сепию к изображению. 100% - это будет завершенная сепия, 0% - исходное изображение.

filter: sepia(100% ) ;
// Browser Specific
-webkit-filter: sepia(100% ) ;
-moz-filter: sepia(100% ) ;
-o-filter: sepia(100% ) ;
-ms-filter: sepia(100% ) ;

Поддержка браузерами

Webkit Mozilla Trident Presto
Размытие Экспериментальная Нет Нет Нет
Яркость
Насыщенность
Поворот тонов
Контрастность
Инверсия Только полная инверсия
Обесцвечивание Экспериментальная
Sepia

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