brightness()

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2016.

brightness()CSS の関数で、入力画像に線形乗算を適用し、明るくしたり暗くしたりします。その結果は <filter-function> です。

試してみましょう

構文

css
brightness(amount)

引数

amount

明るさで、 <number> または <percentage> で指定します。値が 100% 未満の場合は入力画像または要素が暗くなり、 100% を超える場合は明るくなります。値が 0% の場合は完全に黒い画像または要素が作成され、 100% の場合は入力が変更されません。 0% から 100% までの他の値は、線形の乗算効果があります。 100% を超える値も許可されており、明るい結果を提供します。補間の初期値は 1 です。負の値は許可されていません。何も指定しない場合の既定値は 1 です。

以下は、等価な値のペアです。

css
brightness(0) /* 輝度がゼロに縮小されるため、入力が黒くなる */
brightness(0%)

brightness(0.4) /* 入力の明るさが40%に縮小されるため、入力は60%暗くなる */
brightness(40%)

brightness(1) /* 入力の明るさは変更されない */
brightness(100%)

brightness(2) /* 入力の明るさが 2 倍に */
brightness(200%)

形式文法

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

backdrop-filter プロパティを用いた brightness の適用

この例は、段落に brightness() フィルターを、 backdrop-filter プロパティを介して適用する方法を示します。

CSS

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

結果

この例では、<p> 要素の背後の領域の色が直線的に変化します。 backdrop-filter プロパティが brightness(0%) に設定されていた場合、<p> 要素を含む <div> 領域は黒色となり、背後の画像を隠します。 brightness(100%) では、<div> 領域の色は入力の #d4d5b2 と同じになり、背景の画像は完全に透明になります。 この例のように明るさを 150% に設定すると、背景の画像の色は <div> 要素の明るさによって隠されます。

数値とパーセント値を用いた brightness の設定

例えば、 brightness() フィルターが、 filter プロパティを介して、コンテンツ、境界線、背景画像を含め、要素全体に適用されます。その結果、異なる明るさの値の 3 つのバリエーションが表示されます。

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

url() と SVG の brightness フィルターを用いた brightness の適用

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); /* 埋め込み SVG による */
filter: url(folder/fileName.svg#darken25); /* 外部 SVG フィルター定義 */

下記の画像では、最初の画像は brightness() フィルター機能が適用され、 2 つ目の画像は同様の SVG 明るさ機能が適用され、 3 つ目は比較用の元画像です。

仕様書

Specification
Filter Effects Module Level 1
# funcdef-filter-brightness

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
brightness()

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報