Как сделать фон черно белым css

Добавил пользователь Алексей Ф.
Обновлено: 04.10.2024

Чтобы не делать два изображения - одно цветное другое черно-белое. Можно воспользоваться средствами CSS.

Сделаем, чтобы при наведении на картинку в ссылке цветное изображение менялось на черно-белое. Для этого в css файл добавим такой код:

В тойже папке, где находится файл css c этим кодом, создадим файл grayscale.svg с таким содержанием

Это нужно для Firefox, иначе при наведении мышки на картинку, картинка исчезнет. Картинка исчезает очень ненадолго при первом наведении мышки, думаю, потому что нужно какое-то время чтобы этот файл закачался.

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

Зададим для этой однопиксельной картинки класс blank, и добавим, соответственный, css код:

От автора: фильтры изначально входили в спецификацию SVG. Позже люди поняли, что это очень полезный инструмент, и W3C начали работу по добавлению некоторых распространенных фильтров в CSS. CSS фильтры – довольно мощный и простой инструмент. С их помощью можно делать размытие, изменять яркость или насыщенность изображений и т.д. Фильтры можно использовать как отдельно, так и в комбинациях.

Для применения фильтра необходимо использовать следующий синтаксис:

Давайте коротко пройдемся по всем фильтрам.


Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Яркость

С помощью данного фильтра можно управлять яркостью изображений. В качестве параметра принимается значение, большее или равное нулю. Если задать значение 0%, то мы получим полностью черное изображение. Точно так же значение 100% даст нам исходное изображение. Для осветления изображения можно задать значение более 100%. К примеру, значение 300% сделает изображения в 3 раза светлее:

Контраст

С помощью данного фильтра можно управлять контрастом изображений. Как и яркость, тут принимается значение, большее или равное нулю. Фильтр контролирует разницу между светлыми и темными частями изображения в CSS. То есть значение 0% даст нам серое изображение. Значение 100% даст нам исходное изображение, а значения выше 100% будут увеличивать контраст изображения:

Оттенки серого

Из названия ясно, что фильтр помогает делать изображение черно-белым. Фильтр постепенно конвертирует все цвета изображений в оттенки серого. Значение 0% не окажет никакого эффекта на изображение, а 100% сделает изображение полностью черно-белым. Отрицательные значения не принимаются.

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

Фильтр управляет насыщенностью цветов изображений. Значение 0% уберет все цвета с изображения, а значение выше 100% добавит контрастности. На 100% мы видим оригинальное изображение. Отрицательные значения не принимаются.

Сепия

Фильтр добавляет сепию, как на старых фотографиях. Насыщенность сепии зависит от значения в процентах. Со значением 0% мы видим оригинал, а 100% даст нам полную сепию.

Поворот цвета

Фильтр изменяет все цвета изображений. Угол поворота цветов зависит от заданного параметра. При значении 0deg изображение остается прежним. У данного фильтра нет максимального значения, однако выше 360deg эффект начинает повторяться. То есть значения 90deg и 450deg дадут одинаковый результат.

Инверсия

Фильтр инвертирует все цвета изображений. Сила инверсии зависит от параметра. Значение 0% никак не повлияет на изображение, а 100% полностью его инвертирует.


Практический курс по верстке адаптивного сайта с нуля!

Изучите курс и узнайте, как верстать современные сайты на HTML5 и CSS3

Размытие

Фильтр применяет к изображениям размытие по Гауссу. Цвета начинают перемешиваться и наползать друг на друга. Передаваемый параметр радиуса задает количество пикселей на экране, которые будут смешиваться. Чем больше значение, тем сильнее размытие. Фильтр принимает значения в любой форме, кроме процентов.

Прозрачность

Фильтр добавляет прозрачности изображениям. На 100% изображение будет полностью непрозрачным, а при 0% полностью прозрачным. Фильтр работает точно так же, как известное свойство opacity, разница только в производительности. Свойство filter использует аппаратное ускорение в некоторых браузерах, что может повысить его производительность.

Отбрасываемая тень

По названию понятно, что фильтр добавляет эффект тени к изображениям. На самом деле, это размытая версия альфа маски изображения со сдвигом с заданным цветом. В свойстве необходимо указать смещение по оси Х, У, а также цвет тени. Также можно указать радиус размытия, чтобы регулировать резкость края тени.

Все фильтры до этого момента были довольно общими, хотя и полезными. Однако вашему проекту может потребоваться что-то более специфичное. Если ни один из фильтров выше вам не подошел, вы можете создать свой SVG фильтр и через id передать его в фильтр url().

Объединение и анимация фильтров

Для получения различных эффектов можно объединять несколько фильтров. В большинстве случаев порядок фильтров не имеет значения, однако применяются они в том порядке, в котором они прописаны в CSS, и некоторые фильтры переписывают другие. К примеру, если использовать фильтр sepia после grayscale, то мы получим сепию и наоборот. Фильтры поддаются анимации. Если правильно все сделать, можно добиться интересного эффекта. Разберем пример ниже:

В коде выше на разных этапах анимации применяются разные фильтры. Результат можно посмотреть в демо ниже:

Внезапная смена яркости и контрастности с полной сепией в середине анимации придают драматизма. Лучший способ понять принцип работы – самому поэкспериментировать с анимацией фильтров!

Замечания

Даже если фильтр визуально вылезает за пределы блоковой модели элемента, он никак не влияет на геометрию блоковой модели. Помните, что фильтры влияют на все части элементов: фон, рамки, текст. Фильтры можно применять к видео и тегу iframe. Демо ниже иллюстрирует эту концепцию.

Все фильтры сильно изменяют изображение, умно работают с производительностью, кроме эффекта blur, который может замедлить браузер, если в нем не используется аппаратное ускорение. Производительность фильтра url() будет зависеть от примененного SVG фильтра.

Свойство filter поддерживается во всех основных браузерах. В Chrome и Opera нужно добавлять префикс. Нет поддержки в IE, хотя Edge частично поддерживает фильтр. Частичная поддержка означает, что Edge поддерживает все фильтры, кроме url().

Заключение

В этой статье мы раскрыли множество возможностей в CSS фильтрах, которые доступны для разработчиков. Фильтры имеют высокую поддержку в браузерах, их легко применять, их производительность выше, чем у canvas. Кроме того, как я сказал в последнем разделе, их можно применять к видео и другим элементам.

Css фильтры позволяют добавлять элементам сайта визуальные эффекты, такие как яркость, контраст, размытие и т.д.

Фильтры задаются с помощью css свойства filter

Виды фильтров

В качестве примера объекта для демонстрации возможностей фильтров будем использовать изображение.

Изображение без фильтров

grayscale (оттенки серого)

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

Пример

Изображение с фильтром grayscale

sepia (сепия)

Добаяляет объекту эффект старой фотографии.

Пример

Изображение с фильтром sepia

blur (размытие)

Добаяляет объекту эффект размытия

Пример

Изображение с фильтром blur

opacity (прозрачность)

Добавляет объекту эффект прозрачности. Работает аналогично css свойству opacity, различия только в синтаксисе.

Пример

Изображение с фильтром opacity

brightness (яркость)

Позволяет уменьшать и увеличивать яркость объекта.

Пример

Изображение с фильтром brightness уменьшение

i

Изображение с фильтром brightness увеличение

contrast (контраст)

Позволяет уменьшать и увеличивать контрастность объекта.

Пример

Изображение с фильтром contrast уменьшение

Изображение с фильтром contrast увеличение

saturate (насыщенность)

Позволяет уменьшать и увеличивать насыщенность цветов объекта.

Пример

Изображение с фильтром saturate уменьшение

Изображение с фильтром saturate увеличение

hue-rotate (смещение цвета)

Позволяет смещать цвета объекта по цветовому кругу.

Пример

Изображение с фильтром hue-rotate 90 градусов

Изображение с фильтром hue-rotate 180 градусов

invert (инверсия цвета)

Позволяет инвертировать цвета объекта.

Пример

Изображение с фильтром invert

Часто возникающие проблемы

Наиболее часто возникающим проблемой при использовании фильтров является: "Я задал блоку фоновое изображение и фильтр, но фильтр применился ко всем элементам, а не только к фону". Все правильно, ведь фильтр как и фон задан для всего блока. Для того чтобы применить фильтр только к изображению его надо вынести в отдельный элемент.

Есть много способов для преобразования изображения в серый цвет с помощью CSS. В этой статье мы расскажем, как можно отобразить цветное изображение в оттенках серого с помощью CSS свойств.

  1. Сначала установите тег .
  2. Вставьте изображение в тег . Потом используйте свойство filter со значением grayscale. Filter применяет визуальные эффекты к элементу (изображению).

Давайте посмотрим следующий пример, чтобы лучше понять детали:

Пример

Рассмотрим другой пример:

Пример

В современных браузерах доступен новый способ отображения изображения в оттенках серого.

Свойство background-blend-mode позволяет использовать интересные эффекты подобно grayscale.

Такую возможность дает значение luminosity, установленное на белом фоне.

Пример

Можно использовать 3 уровня наложения. Первый уровень -это изображение, второй - черно-белый градиент. Если примените многократный режим смешивания, вы получите белый результат по-прежнему на белой части, но оригинальное изображение на черной части не будет иметь никакого эффекта многократного.

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

Читайте также: