contrast()

Baseline 已广泛支持

此特性已非常成熟,可在多种设备和浏览器版本上使用。自 ⁨2016 年 9 月⁩以来,它已在各大浏览器中可用。

contrast() CSS 函数 用于调整输入图像的对比度。其结果是一个 <filter-function>

试一试

filter: contrast(1);
filter: contrast(1.75);
filter: contrast(50%);
filter: contrast(0);
<section id="default-example">
  <img
    class="transition-all"
    id="example-element"
    src="/shared-assets/images/examples/firefox-logo.svg"
    width="200" />
</section>

语法

css
contrast(amount)

amount 可选

结果的对比度,指定为 <number><percentage>。低于 100% 的值会降低对比度,而高于 100% 的值会增加对比度。值为 00% 将创建一个完全灰色的图像,而值为 1100% 则保持输入不变。不允许使用负值。插值的初始值为 1。默认值为 1

以下是等效值对

css
contrast(0)    /* Completely gray */
contrast(0%)

contrast(0.65) /* 65% contrast */
contrast(65%)

contrast()     /* No effect */
contrast(1)
contrast(100%)

contrast(2)    /* Double contrast */
contrast(200%)

正式语法

<contrast()> = 
contrast( [ <number> | <percentage> ]? )

示例

与 backdrop-filter 属性配合使用

此示例通过 backdrop-filter CSS 属性对段落和等宽文本应用 contrast() 滤镜,对 <p><code> 后面的区域进行颜色偏移。

css
.container {
  background: url("unity_for_the_people.jpg") no-repeat center / contain #333399;
}
p {
  backdrop-filter: contrast(0.5);
}
code {
  backdrop-filter: contrast(0.15);
}

与 filter 属性配合使用

此示例通过 filter CSS 属性应用 contrast() 滤镜,通过改变整个元素(包括内容、边框、背景和阴影)的颜色来改变对比度。

css
p:first-of-type {
  filter: contrast(30%);
}
p:last-of-type {
  filter: contrast(300%);
}

与 url() 和 SVG 对比度滤镜配合使用

SVG <filter> 元素用于定义自定义滤镜效果,然后可以通过 id 引用这些效果。<filter><feComponentTransfer> 原语支持像素级颜色重映射。给定以下内容

html
<svg
  xmlns="http://www.w3.org/2000/svg"
  id="svg"
  viewBox="0 0 240 151"
  height="0"
  width="0"
  overflow="visible"
  color-interpolation-filters="sRGB">
  <filter id="contrast">
    <feComponentTransfer>
      <feFuncR type="linear" slope="2" intercept="-0.5" />
      <feFuncG type="linear" slope="2" intercept="-0.5" />
      <feFuncB type="linear" slope="2" intercept="-0.5" />
    </feComponentTransfer>
  </filter>
</svg>

这些值产生相同的结果

css
filter: contrast(200%);
filter: url("#contrast"); /* with embedded SVG */
filter: url("folder/fileName.svg#contrast"); /* external svg filter definition */

此示例展示了三张图像:应用了 contrast() 滤镜函数的图像,应用了等效 url() 滤镜的图像,以及原始图像用于比较

规范

规范
滤镜效果模块第 1 级
# funcdef-filter-contrast

浏览器兼容性

另见