Как наложить цвет на картинку css
Чтобы наложить цвет на картинку с помощью CSS, вы можете использовать свойство background-color для элемента, содержащего изображение. Это свойство устанавливает цвет фона элемента и может быть применено к любому элементу, в том числе к элементу, содержащему изображение.
Например, если у вас есть элемент с классом image-container , содержащий изображение, и вы хотите сделать полупрозрачный зеленый фон, вы можете использовать следующий CSS-код:
.image-container background-color: rgba(0, 255, 0, 0.5); >
Здесь мы устанавливаем цвет фона элемента с помощью свойства background-color . Функция rgba используется для установки цвета в формате «красный, зеленый, синий, прозрачность», где значения красного, зеленого и синего цветов находятся в диапазоне от 0 до 255, а прозрачность — от 0 до 1. Значение прозрачности 0.5 устанавливает полупрозрачный цвет.
Если вы хотите, чтобы цвет находился над изображением, а не под ним, вы можете использовать свойство background-blend-mode , которое определяет как фоновое изображение элемента будет смешиваться с его фоновым цветом:
.image-container background-color: rgba(0, 255, 0, 0.5); background-blend-mode: overlay; >
Здесь мы используем свойство background-blend-mode с значением overlay , таким образом фоновый цвет смешивается с фоновым изображением, чтобы отразить яркость или темноту фона.
Наложить цвет на картинку как правильнее всего?
В гугле ответы есть, но большинство из них старые и возможно сейчас не совсем актуальны.
Задача такая, наложить полу прозрачные бекграунд по верх картинки и при наведении менять цвет этого бекграунда.
- Вопрос задан более трёх лет назад
- 17268 просмотров
Комментировать
Решения вопроса 3
Ivan Stroykin @StivinKing
Наложение полупрозрачного цвета на background-image
Как на картинку наложить цвет с прозрачностью в 0.3 (например, красный) на background-image: url(); ?
Отслеживать
16.6k 8 8 золотых знаков 26 26 серебряных знаков 56 56 бронзовых знаков
задан 6 ноя 2014 в 13:25
176 2 2 золотых знака 5 5 серебряных знаков 19 19 бронзовых знаков
3 ответа 3
Сортировка: Сброс на вариант по умолчанию
Ответ от @ДмитрийВасильевич был верный, но нужно поменять местами градиент и фоновое изображение:
background-image: linear-gradient(to top, rgba(255,0,0,0.3), rgba(255,0,0,0.3)), url(http://vmeste.eu/fun/1142791216.jpg);
Изображение идущее в коде выше перекрывает изображение идущее ниже.
Также можно по отдельности для градиента и изображения задать прочие фоновые свойства:
background-repeat: no-repeat, no-repeat; background-size: cover, contain;
Background-blend-mode
На этой неделе в Firefox 30 было включено по умолчанию свойство background-blend-mode . Таким образом, Firefox стал третьим браузером, поддерживающим это свойство (два других — Opera и Chrome). Safari будет поддерживать это свойство в следующей версии, про планы IE мне ничего найти не удалось.
Внимание: все демо в посте — действующие примеры без фолбеков. Для просмотра лучше всего воспользоваться последними версиями Chrome, Opera или Firefox.
Что делает это новое свойство и какие возможности оно нам дает?
background-blend-mode управляет режимами наложения слоев фона, заданного в CSS.
Наведите курсор на картинку, чтобы увидеть исходное изображение.
background-blend-mode аналогичен режимам наложения слоев в фотошопе, и список возможных значений свойства вам, скорее всего, покажется знакомым:
- normal
- multiply
- screen
- overlay
- darken
- lighten
- color-dodge
- color-burn
- hard-light
- soft-light
- difference
- exclusion
- hue
- saturation
- color
- luminosity
Как это работает?
Возьмем, к примеру, картинку с котиком и зададим её фоном:
background: teal url(http://placekitten.com/250/200);
Для наложения слоев обязательное условие, чтобы слоев было больше одного. В нашем случае первым слоем является цвет ( teal ).
Теперь можно добавить режим наложения, например:
background: teal url(http://placekitten.com/250/200); background-blend-mode: hard-light;
Вы можете поиграться с режимами здесь или посмотреть их списком на одной странице вот тут.
Слоев фона может быть больше двух, и для каждого слоя можно отдельно задавать режим наложения:
background: teal url(http://placekitten.com/250/200); background-blend-mode: hard-light, multiply, normal;
Фоны могут содержать не только изображения, но и градиенты, что позволяет делать разные интересные эффекты:
Как можно использовать background-blend-mode ?
Предположим, есть сайт в определенной цветовой гамме, и в дизайне нужно разместить несколько картинок:
Так картинки не очень вписываются в цветовую схему. Раньше чтобы тонировать изображения под цвет сайта, потребовалось бы открыть графический редактор и проделать эту операцию с каждой картинкой, но сейчас это можно сделать одной строчкой:
background-blend-mode: luminosity;
Способ имеет свои преимущества:
- Экономит время — не нужно вручную красить картинки, используемые в дизайне. Особо пригодятся режимы наложения в прототипировании, когда картинки, скорее всего, ещё будут меняться.
- Позволяет легко сделать эффект, когда при наведении картинка показывается в оригинальном цвете. При этом не нужно готовить два изображения и менять их по наведению курсора — достаточно одного.
А если потом изменится цветовая схема сайта — не нужно будет заново перекрашивать картинки под новую схему — всё произойдет само собой:
Правда, мне не удалось сделать плавную смену режимов наложения. Насколько я понимаю, они не анимируются. Но это можно обойти используя псевдоэлементы: через :before создается дублирующий слой с той же картинкой, и ему по наведению меняется прозрачность — это можно сделать плавно (пример справа):
Ещё один способ покрасить картинку в дизайне — подложить полосатый градиент:
Приятный бонус background-blend-mode — плавная деградация: если браузер не поддерживает режимы наложения, посетитель увидит обычную картинку. Может быть, она будет не очень вписана в цветовую схему, но это лучше чем ничего.
Интересно, что в некоторых режимах результат различается в зависимости от того, наложена ли картинка на цвет или цвет поверх картинки (слева картинка поверх цвета, справа наоборот):
Наложение цвета на картинку позволяет получить более интересные результаты, похожие на цветовые фильтры, но этот вариант хуже с точки зрения деградации, потому что если режимы не сработают, на странице отобразится верхний слой — то есть заливка цветом.
С изображениями всё более-менее понятно, но вот для CSS-градиентов режимы наложения поистине открывают новые горизонты. Теперь слои градиентов могут не просто просвечивать друг под другом в областях полной или частичной прозрачности, но также они могут взаимодействовать с нижележащими слоями, образовуя новые сочетания. Делать такие градиенты безусловно сложнее, но и интереснее тоже.
Уже есть первая галерея с примерами: bennettfeely.com/gradients/. Ниже на странице можно найти JS-фолбек и взвешивание одних и тех же градиентов, сделанных на CSS или в виде изображений различных форматов. CSS, конечно, выигрывает.
И даже если пока что не все браузеры позволяют использовать background-blend-mode , имеет смысл поинтересоваться какие из используемых вами изображений уже можно заменить CSS-паттернами, чтобы получить выигрыш в весе и производительности.
Вдохновившись примерами из галереи, я решила посмотреть что ещё можно сделать. Одно из забавных открытий — шахматная доска:
Без режимов наложения такое клеточки делать немного головоломно (хотя на основе такого градиента можно получить множество других). С режимами клеточки делаются всего из двух градиентов, третий понадобится в случае если клеточки должны быть не черно-белыми, а цветными.
Правда, паттерн не всегда хорошо поддаётся перекрашиванию, это некоторый недостаток способа. С другой стороны, в этом случае заливкой клеток может быть не только цвет, но и градиент, что в предыдущем способе было бы не очень удобно делать.
Ещё несколько градиентов:
Можете отредактировать любой из них отключив режимы наложения и посмотреть что меняется (а также увидеть как выглядят паттерны в бразуерах без поддержки свойства), можете попробовать менять режимы местами, вписывать свои значения или менять цвет фона. Иногда в процессе таких экспериментов из одного паттерна получается ещё несколько.
background-blend-mode выглядит очень привлекательно, позволяя добавить немного магии фотошопа в привычный CSS.