saturate()
The saturate()
CSS function super-saturates or desaturates the input image. Its result is a <filter-function>
.
Note: saturate()
is specified as a matrix operation on the RGB color. It does not actually convert the color to the HSL model, which is a non-linear operation. Therefore, it may not preserve the hue or lightness of the original color.
Try it
Syntax
saturate(amount)
Parameters
amount
-
The amount of the conversion, specified as a
<number>
or a<percentage>
. A value under100%
desaturates the image, while a value over100%
super-saturates it. A value of0%
is completely unsaturated, while a value of100%
leaves the input unchanged. The initial value for interpolation is1
.
Examples
Examples of correct values for saturate()
saturate(0) /* Completely unsaturated */
saturate(.4) /* 40% saturated */
saturate(100%) /* No effect */
saturate(200%) /* Double saturation */
saturate() does not preserve hue or lightness
The diagram below compares two color gradients with hsl(0, 50%, 50%)
as the mid-point: the first is generated using saturate()
, and the second uses actual HSL color values. Note how the saturate()
gradient shows differences in hue and lightness towards the two ends.
<div>
<p>Using <code>saturate()</code></p>
<div id="saturate"></div>
</div>
<div>
<p>Using <code>hsl()</code></p>
<div id="hsl"></div>
</div>
const saturate = document.getElementById("saturate");
const hsl = document.getElementById("hsl");
for (let i = 0; i <= 200; i++) {
const div1 = document.createElement("div");
div1.style.backgroundColor = `hsl(0, ${i / 2}%, 50%)`;
hsl.appendChild(div1);
const div2 = document.createElement("div");
div2.style.backgroundColor = "hsl(0, 50%, 50%)";
div2.style.filter = `saturate(${i}%)`;
saturate.appendChild(div2);
}
Specifications
Specification |
---|
Filter Effects Module Level 1 # funcdef-filter-saturate |
Browser compatibility
BCD tables only load in the browser
See also
The other <filter-function>
functions available to be used in values of the filter
and backdrop-filter
properties include: