One of the most invaluable features of Photoshop—arguably, the feature that powered it ahead of its competition—is blend modes. Blend modes take two pixels laid on top of each other and combine them in different ways, for example the darker color blend mode will simply render the darker of the two pixels. When expanded across a whole image, blend modes can produce some stunning effects.
Although Adobe's Photoshop didn't invent blend modes, its implementation is certainly the most emulated. But now, you don't need Photoshop to style your imagery in this way, because we can do it all, dynamically, with CSS3.
Browser Support
As it stands, browser support for CSS' background-blend-mode property is improving. Earlier versions of browsers required vendor prefixes and or the activation of experimental features, but caniuse.com reports support in the current versions of Chrome, Firefox and Opera, with Safari following soon.
There's no sign of IE support yet, but as blend modes are a progressive enhancement we can start considering using them now.
How to use background-blend-mode
There are a number of blend mode options in the CSS3 candidate recommendations, but the most useful for our purposes is background-blend-mode. This property allows us to blend two images, or an image and a background color.
Here's the code we need:
<div class="blend"></div>
And here's our basic CSS:
.blend { width:782px; height:540px; background:#3db6b8 url("lighthouse.jpg") no-repeat center center; }
We're now ready to add the blend modes.
To do this, we're going to add another class to our div, for example "multiply":
<div class="blend multiply"></div>
And then we'll create a second style rule:
.blend.multiply { background-blend-mode: multiply; }
If you'd like to take a look at the code you can download the source files here.
Multiply
Multiply, as the name suggests, multiplies the base pixel by the blend color, resulting in a darker color. Multiplying black results in black, and multiplying white leaves the image unchanged.
background-blend-mode: multiply;
Screen
Screen multiplies the inverse of the two pixel colors. Screen is the opposite of multiply and using screen on white will result in a white image and on black will leave the image unchanged.
background-blend-mode: screen;
Overlay
Overlay is a complex blend mode. The multiplication depends on the base color: light colors get lighter, dark colors get darker.
background-blend-mode: overlay;
Darken
Darken, darkens an image. It looks at the two overlapping pixels and selects the darker of the two.
background-blend-mode: darken;
Lighten
The polar opposite of darken, lighten lightens an image by comparing the two overlapping pixels and choosing the lighter of the two.
background-blend-mode: lighten;
Color dodge
Color dodge brightens the base color to reflect the blend color by decreasing contrast.
background-blend-mode: color-dodge;
Color burn
Color burn is the polar opposite of color dodge, it darkens the base color resulting in an increase in contrast.
background-blend-mode: color-burn;
Hard light
Hard light either multiplies, or screens the colors depending on the blend color. If the blend is lighter than 50% gray the image will be lightened, otherwise it will be darkened. It's a great way to enhance the highlights and shadows in an image.
background-blend-mode: hard-light;
Soft light
Soft light is similar to hard light, but instead of Multiplying or screening the colors, soft light uses dodge and burn for a subtler effect.
background-blend-mode: soft-light;
Difference
Difference compares the two overlapping pixels and subtracts the color with the greater brightness from the other.
background-blend-mode: difference;
Exclusion
Exclusion is similar to difference, but it produces less contrast so is a little more usable.
background-blend-mode: exclusion;
Hue
Hue takes the luminance and saturation of the base color and the hue of the blend color and merges them.
background-blend-mode: hue;
Saturation
Saturation, like hue, merges two of the values of the base color with one property of the blend color, in this case the saturation.
background-blend-mode: saturation;
Color
Color follows the same pattern as hue and saturation, this time however it's the luminance of the base color and the hue and saturation of the blend color.
background-blend-mode: color;
Luminosity
Luminosity is the opposite of color, it combines the hue and saturation of the base color and the luminance of the blend color.
background-blend-mode: luminosity;
The image used throughout the article is lighthouse image via Shutterstock.