Статьи

Передай привет Webkit Filters

Ранее в этом месяце была выпущена новая спецификация Filter Effects 1.0 . В нем представлены некоторые захватывающие новые Photoshop-подобные эффекты, которые мы можем использовать в браузере. Более того, Webkit уже получил поддержку (по ночам)!


«Эффект фильтра — это графическая операция, которая применяется к элементу при его рисовании в документе. Это эффект на основе изображения, в котором в качестве входных данных принимается ноль или более изображений, число параметров, характерных для эффекта, а затем производит изображение в качестве вывода. «

Теперь, по крайней мере, на этом этапе, я бы не предполагал, что смогу показать вам все, что возможно с этими новыми фильтрами. Я все еще учу их сам! Тем не менее, я покажу вам несколько новых фильтров, как мы можем использовать их в наших проектах, а затем, мы надеемся, мы все сможем провести мозговой штурм и учиться друг у друга в комментариях. Давайте начнем.

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

1
<img src=»https://cdn.tutsplus.com/net/uploads/legacy/nt-logo.jpg» data-original-url=»https://cdn.tutsplus.com/net/uploads/legacy/nt-logo.jpg» data-original-url=»http://nettuts.s3.amazonaws.com/nt-logo.jpg» alt=»Nettuts+ Logo»>
Неттутс + Логотип

Помните: эти эффекты еще не доступны в публичных выпусках браузеров Webkit. На данный момент загрузите Canary при тестировании этих демонстраций.


Вы когда-нибудь играли с панелью Hue / Saturation в Photoshop? Ну, теперь вы можете поиграть с ним в браузере.

1
2
3
img {
   -webkit-filter: hue-rotate(50deg);
}

Если указание этого значения в градусах кажется непонятным, просто представьте цветовое колесо. Количество градусов, которое вы указываете, определяет, где останавливается это колесо. Это означает, что 0deg ничего не сделает, а 50deg повернет ручку соответственно.

В этом случае логотип Nettuts + приобретет голубоватый оттенок.

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

1
2
3
4
5
6
7
8
9
img {
   -webkit-animation: adjustHue 1s alternate infinite;
}
     
@-webkit-keyframes adjustHue {
   0% { -webkit-filter: hue-rotate(30deg);
   50% { -webkit-filter: hue-rotate(60deg);
   100% { -webkit-filter: hue-rotate(90deg);
}

Достаточно просто. Посмотреть демо


В прошлом мы использовали множество хаков для перевода изображения из черно-белого в цветное в браузере. Одна техника требует двух изображений, накладываемых друг на друга. Другим вариантом является использование холста. Или … мы можем использовать фильтр в grayscale .

1
2
3
img {
   -webkit-filter: grayscale(100%);
}

Применяя процентное соотношение к функции grayscale , подумайте про себя: «На шкале от 0 до 100%, насколько серым я хочу, чтобы это изображение было?

При использовании в тандеме с переходами CSS3 мы можем применить приятный и чистый эффект наведения.

1
2
3
4
5
6
img {
  -webkit-transition: -webkit-filter 1s;
}
img:hover {
    -webkit-filter: grayscale(100%);
}

В будущем вы захотите предоставить префиксы для других браузеров, однако в этом нет необходимости. Нет необходимости применять переходы Mozilla для размещения фильтра, который реализован только в Webkit (пока).

Посмотреть демо


Наслаждаешься эффектом сепии со вкусом Instagram? Давайте посмотрим, как выглядели Nettuts + на старом западе.

1
2
3
img {
      -webkit-filter: sepia(100%);
}

Обычно, однако, этот эффект применяется к фотографиям. Давайте посмотрим, как выглядит величайший художник, который когда-либо жил в сепии.

Отлично.


Передав радиус, мы можем легко размыть изображение в браузере.

1
2
3
img {
      -webkit-filter: blur(2px);
}

Или увеличив радиус размытия до 50px .


Мы используем фильтр brightness чтобы указать … дождаться его … насколько ярким должно быть изображение на входе.

1
2
3
img {
      -webkit-filter: brightness(15%);
}

Думайте о 100% как о домашней базе. brightness(100%) сохраняет изображение без изменений. Однако при уменьшении этого процента изображение будет продолжать темнеть.

Не забывайте: вы можете комбинировать все эти фильтры.

1
2
3
img {
      -webkit-filter: brightness(60%) sepia(100%);
}

Теперь мы можем легко настроить контраст изображения.

1
2
3
img {
      -webkit-filter: contrast(200%);
}

Еще раз, думайте о 100% как о положении покоя. Затем мы можем уменьшить или увеличить это значение, чтобы отрегулировать контрастность изображения. Согласно спецификации, применение значения 0% должно сделать изображение на 100% черным, аналогично тому, что вы можете ожидать от -webkit-filter: brightness(0%); , Тем не менее, я вижу больше темно-серого цвета.

1
2
3
img {
      -webkit-filter: contrast(0%);
}

Теперь, если мы значительно увеличим процент, до 2000% :

1
2
3
img {
      -webkit-filter: contrast(2000%);
}

Просто для удовольствия, давайте создадим пульсирующую матричную версию логотипа Nettuts +. Мы будем комбинировать CSS3-анимацию и фильтры.

1
2
3
4
5
6
7
8
img {
    -webkit-animation: bluePill 1s alternate infinite;
}
     
@-webkit-keyframes bluePill {
   0% { -webkit-filter: contrast(2000%);
   100% { -webkit-filter: contrast(100%);
}

Посмотреть демо


Пользователи Mac: нажмите Control + Option + Command + 8 . Обратите внимание, как он переворачивает ваш экран (конечно, вы заметили). Я использую этот трюк поздно ночью, когда читаю на компьютере, и у меня болят глаза.

Применив процентное значение 100 к новому invert фильтру, мы можем добиться точно такого же эффекта.

1
2
3
img {
      -webkit-filter: invert(100%);
}

Обратите внимание, что 0% оставит изображение без изменений.

Теперь вы можете технически применить это, скажем, к телу вашего сайта, и это сработает. Однако вы заметите значительное замедление и потеряете возможность прокручивать страницу. АКА — Не делай этого, кроме веселья.


В дополнение к настройке grayscale(100%) , мы могли бы также достичь аналогичного эффекта, полностью обесцветив изображение.

В этом случае 100% — это неизменное состояние, и в этот момент вы можете уменьшить или увеличить это значение. Таким образом, уменьшение этого значения до 0% должно удалить весь цвет с изображения.

1
2
3
img {
      -webkit-filter: saturate(0%);
}

Или, увеличив значение до 700%:


Следите за новостями этой статьи в течение следующей недели. Поскольку эти методы все еще супер новы, всем нам нужно время, чтобы понять, как их использовать. Я буду обновлять эту статью, как я узнаю больше !