Кратко
Скопированоbackground смешивает фоновую картинку и фоновый цвет элемента. Пиксель за пикселем.
Пример
Скопировано
<div class="card"></div>
<div class="card"></div>
.card { background-image: url("texture.jpg"); background-color: #2E9AFF; background-blend-mode: multiply;}
.card {
background-image: url("texture.jpg");
background-color: #2E9AFF;
background-blend-mode: multiply;
}
Как понять
СкопированоКогда у элемента есть несколько фоновых слоёв — например, background поверх background — они по умолчанию накрывают друг друга. Изображение сверху, цвет снизу. И цвет виден только там, где изображение прозрачное.
background меняет правила игры: вместо перекрытия браузер смешивает пиксели слоёв по математической формуле. Каждый режим делает это по своей формуле, что даёт разный визуальный эффект.
Логика такая: верхний слой source (источник), нижний слой backdrop (подложка). Браузер обрабатывает каждый пиксель: берёт цвет из обоих слоёв, применяет формулу и получает итоговый цвет.
Важно понимать отличие от mix: background работает только внутри одного элемента, смешивает его собственные фоновые слои. mix смешивает сам элемент с тем, что находится под ним в DOM.
Если у элемента несколько фоновых изображений, каждый слой смешивается с тем, что под ним, по цепочке сверху вниз. Самый нижний слой (обычно background) всегда остаётся подложкой.
Как пишется
Скопировано
.element { background-image: url("foto.jpg"); background-color: tomato; background-blend-mode: multiply;}
.element {
background-image: url("foto.jpg");
background-color: tomato;
background-blend-mode: multiply;
}
При нескольких фонах значения задаются через запятую в том же порядке, что и в background:
.element { background-image: url("top.png"), url("bottom.jpg"); background-color: navy; background-blend-mode: screen, multiply;}
.element {
background-image: url("top.png"), url("bottom.jpg");
background-color: navy;
background-blend-mode: screen, multiply;
}
Доступные значения делятся на несколько смысловых групп.
normal
СкопированоЗначение по умолчанию. Верхний слой просто перекрывает нижний без смешения.
Режимы затемнения
Скопированоdarken — оставляет более тёмный из двух пикселей. Светлые участки изображения заменяются цветом фона, тёмные — остаются.
multiply — перемножает значения каналов обоих слоёв. Результат всегда темнее исходных цветов. Белый цвет при умножении нейтрален, чёрный — даёт чёрный. Полезно для добавления цветового оттенка к изображению.
color — затемняет подложку так, чтобы отразить цвет источника. Даёт сильный, насыщенный контраст.
Режимы осветления
Скопированоlighten — оставляет более светлый из двух пикселей. Эффект, обратный darken.
screen — инвертирует оба слоя, перемножает и снова инвертирует. Результат всегда светлее. Чёрный цвет нейтрален, белый — даёт белый. Хорошо для создания свечения.
color — осветляет подложку, чтобы отразить цвет источника. Похоже на screen, но более интенсивно.
Режимы контраста
Скопированоoverlay — комбинирует multiply и screen: тёмные участки затемняются, светлые — осветляются. Усиливает контраст подложки.
hard — то же самое, что overlay, но с переставленными ролями: логика multiply/screen применяется к источнику, а не к подложке.
soft — мягкая версия hard. Похоже на рассеянный свет прожектора — осветляет или затемняет, но без резких переходов.
Режимы сравнения
Скопированоdifference — вычитает более тёмный цвет из более светлого. Белый инвертирует подложку, чёрный не меняет ничего. Даёт высококонтрастные психоделические эффекты.
exclusion — похоже на difference, но с меньшим контрастом и более мягкими переходами.
Компонентные режимы
СкопированоЭти режимы работают с отдельными компонентами цвета в модели HSL (оттенок, насыщенность, светлота):
hue — берёт оттенок источника и светлоту с насыщенностью подложки.
saturation — берёт насыщенность источника, а оттенок и светлоту — из подложки.
color — берёт оттенок и насыщенность из источника, светлоту — из подложки. Полезно для «раскраски» чёрно-белых изображений.
luminosity — берёт светлоту источника, а оттенок и насыщенность — из подложки. Обратный эффект относительно color.
Подсказки
Скопировано💡 background отлично работает в паре с CSS-градиентами. Градиент в качестве background плюс режим наложения — быстрый способ создать цветовой оверлей поверх фотографии без дополнительных элементов в разметке.
.hero { background-image: linear-gradient( to bottom, transparent, #000 ), url("photo.jpg"); background-blend-mode: multiply; background-size: cover;}
.hero {
background-image:
linear-gradient(
to bottom, transparent, #000
), url("photo.jpg");
background-blend-mode: multiply;
background-size: cover;
}
💡 Свойство не наследуется и не влияет на дочерние элементы — только на фоновые слои самого элемента. Чтобы смешивать элементы между собой, нужен mix.
💡 isolation не влияет на background, только на mix. Если нужно ограничить область смешения при использовании background, это делается структурой разметки.
- Chrome 35, поддерживается
- Edge 79, поддерживается
- Firefox 30, поддерживается
- Safari 8, поддерживается
На практике
Скопированосоветует
Скопировано🛠 multiply с разными background — быстрый способ сделать серию карточек в единой гамме из одной фотографии. Меняется только цвет, а режим наложения тонирует снимок под него. Это удобно в дизайн-системах: одно фото, тематический цвет через переменную и карточки выглядят как иллюстрации под конкретный раздел.
.card { background-image: url("photo.jpg"); background-size: cover; background-blend-mode: multiply;}.card--blue { background-color: #2E9AFF; }.card--orange { background-color: #FF8630; }.card--purple { background-color: #C56FFF; }
.card {
background-image: url("photo.jpg");
background-size: cover;
background-blend-mode: multiply;
}
.card--blue { background-color: #2E9AFF; }
.card--orange { background-color: #FF8630; }
.card--purple { background-color: #C56FFF; }
🛠 В режиме multiply белый пиксель нейтрален, умножение на 1 ничего не меняет. Из этого вытекает полезный трюк: изображение с белым фоном (паттерн, логотип, штамп) можно наложить через multiply, и белый «пропадёт». Останется только тёмный рисунок на фотографии. Не нужен PNG с прозрачностью, хватит JPG или SVG с белым фоном.
.element { background-image: url("pattern-on-white.svg"), url("photo.jpg"); background-blend-mode: multiply; background-size: auto, cover; background-repeat: repeat, no-repeat;}
.element {
background-image:
url("pattern-on-white.svg"),
url("photo.jpg");
background-blend-mode: multiply;
background-size: auto, cover;
background-repeat: repeat, no-repeat;
}
🛠 screen работает зеркально к трюку со штампом и multiply: там белый нейтрален, здесь нейтрален чёрный. Значит, изображение с чёрным фоном и белым рисунком можно наложить через screen — чёрный фон исчезнет, останется только белый рисунок поверх фото. Никакого PNG с прозрачностью.
.element { background-image: url("pattern-on-black.svg"), url("photo.jpg"); background-blend-mode: screen; background-size: auto, cover; background-repeat: repeat, no-repeat;}
.element {
background-image:
url("pattern-on-black.svg"),
url("photo.jpg");
background-blend-mode: screen;
background-size: auto, cover;
background-repeat: repeat, no-repeat;
}