brightness()

Baseline 已广泛支持

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

brightness() CSS <filter-function> 对元素或输入图像应用线性乘数,使图像看起来更亮或更暗。

试一试

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

语法

css
brightness(amount)

amount 可选

亮度可以指定为 <number><percentage>。小于 100% 的值会使输入图像或元素变暗,而大于 100% 的值会使其变亮。0% 的值会创建完全黑色的图像或元素,而 100% 的值会保持输入不变。0%100% 之间的其他值具有线性乘数效果。允许大于 100% 的值,以提供更亮的结果。插值的初始值为 1。不允许使用负值。默认值为 1

以下是等效值的配对

css
brightness(0)   /* Brightness is reduced to zero, so input turns black */
brightness(0%)

brightness(0.4) /* Brightness of input is reduced to 40%, so input is 60% darker */
brightness(40%)

brightness()     /* Brightness of input is not changed */
brightness(1)
brightness(100%)

brightness(2)   /* Brightness of input is doubled */
brightness(200%)

正式语法

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

示例

使用 backdrop-filter 属性应用亮度

此示例展示了如何通过 backdrop-filter CSS 属性将 brightness() 滤镜应用于段落。

CSS

css
.container {
  background: url("be_fierce.jpg") no-repeat right / contain #d4d5b2;
}
p {
  backdrop-filter: brightness(150%);
  text-shadow: 2px 2px white;
}

结果

在此示例中,<p> 元素后面的区域中的颜色线性移动。如果 backdrop-filter 属性设置为 brightness(0%),则带有 <p> 元素的 <div> 区域将是黑色并隐藏后面的图像。在 brightness(100%) 时,<div> 区域颜色将与输入 #d4d5b2 相同,并且后面的图像将完全透明。将亮度设置为 150%,如本例所示,图像中的颜色被 <div> 元素的亮度隐藏。

使用 filter 属性应用亮度

在此示例中,brightness() 滤镜通过 filter CSS 属性应用于整个元素,包括内容、边框和背景图像。结果显示了三种不同亮度值的变体。

css
p:first-of-type {
  filter: brightness(50%);
}
p:last-of-type {
  filter: brightness(200%);
}

使用 url() SVG 亮度滤镜应用亮度

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

在此示例中,为了创建一个将应用它的内容变暗 25%(即原始亮度的 75%)的滤镜,slope 属性设置为 0.75。然后我们可以通过 id 引用该滤镜。

给定以下内容

html
<svg role="none">
  <filter id="darken25" color-interpolation-filters="sRGB">
    <feComponentTransfer>
      <feFuncR type="linear" slope="0.75" />
      <feFuncG type="linear" slope="0.75" />
      <feFuncB type="linear" slope="0.75" />
    </feComponentTransfer>
  </filter>
</svg>

以下声明产生类似的效果

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

在下面的图像中,第一张应用了 brightness() 滤镜函数,第二张应用了类似的 SVG 亮度函数,第三张是原始图像用于比较。

规范

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

浏览器兼容性

另见