<blend-mode>

Baseline Widely available

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

<blend-mode>CSSデータ型で、要素が重なったときにどのように色が現れるかを記述します。 background-blend-mode または mix-blend-mode プロパティで使用されます。

構文

<blend-mode> データ型は、以下に挙げたキーワードのうちの一つで定義します。

normal

下の色が何であるかに関わらず、上の色が最終的な色になります。 この効果は 2 枚の不透明の紙が重なっているようなものです。

multiply

上の色と下の色を掛け合わせた結果が最終的な色になります。 黒いレイヤーは最終的に黒いレイヤーになり、白いレイヤーは変化をもたらしません。 この効果は 2 枚の透明なフィルムに印刷された画像を重ね合わせたようなものです。

screen

色を反転して乗算を行い、さらに色を反転した結果が最終的な色になります。 黒いレイヤーは変化をもたらしません。白いレイヤーは、最終的に白いのレイヤーへ近づけます。 この効果は 2 枚の画像が画面に投影された状況に似ています。

overlay

下の色が暗ければ multiply、下の色が明るければ screen の結果が最終的な色になります。 この混合モードは hard-light と同等ですが、レイヤーは逆です。

darken

色成分ごとに最も暗い値が最終的な値になります。

lighten

色成分ごとに最も明るい値が最終的な値になります。

color-dodge

下の色を、反転した上の色で除算した結果が、最終的な色になります。 黒い前景は変化をもたらしません。背景色を反転した色を持つ前景は、完全に明るい色に導きます。 この混合モードは screen に似ていますが、完全に明るい色に近づけるためには背景色を反転した色と同程度に明るい前景が必要です。

color-burn

反転した下の色を上の色で除算して、さらに反転した結果が最終的な色になります。 白い背景は変化をもたらしません。背景色を反転した色を持つ前景は、最終的に黒い画像へ近づけます。 この混合モードは multiply に似ていますが、最終的に画像を暗くするためには背景色を反転した色と同程度に暗い前景が必要です。

hard-light

上の色が暗い色であれば multiply 、明るい色であれば screen の結果が最終的な色になります。 この混合モードは overlay と同じですが、レイヤーが入れ替わっています。 この効果は、背景に強烈なスポットライトを当てた状況に似ています。

soft-light

最終的な色は hard-light に似ていますが、よりソフトになります。 この混合モードは hard-light に似ています。 この効果は、背景に拡散光のスポットライトを当てた状況に似ています。

difference

2 つの色のうち明るい色から、暗い色を減算した結果が最終的な色になります。 黒いレイヤーは変化をもたらしません。白いレイヤーは、もうひとつのレイヤーの色を反転します。

exclusion

最終的な色は difference に似ていますが、コントラストが低くなります。 difference と同様に、黒いレイヤーは変化をもたらしません。白いレイヤーは、もうひとつのレイヤーの色を反転します。

hue

最終的な色は上の色の色相を持ちますが、彩度および明度は下の色の値を使用します。

saturation

最終的な色は上の色の彩度を持ちますが、色相および明度は下の色の値を使用します。 彩度を持たない純粋なグレーの背景は、効果がありません。

color

最終的な色は上の色の色相および彩度を持ちますが、明度は下の色の値を使用します。 この効果はグレーレベルを保持しており、前景に色をつけるために使用できます。

luminosity

最終的な色は上の色の明度を持ちますが、色相および 彩度は下の色の値を使用します。 この混合モードは color と同じですが、レイヤーが入れ替わっています。

解説

混合モードは、適用されるレイヤー間のそれぞれのピクセルにおいて前景色と背景色を取り、計算を行い、新しい色の値を返します。

混合モード同士の変化は補完されません。すべての変更が直接反映されます。

形式文法

<blend-mode> = 
normal |
multiply |
screen |
overlay |
darken |
lighten |
color-dodge |
color-burn |
hard-light |
soft-light |
difference |
exclusion |
hue |
saturation |
color |
luminosity

"normal" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: normal;
}

"multiply" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: multiply;
}

"screen" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: screen;
}

"overlay" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: overlay;
}

"darken" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: darken;
}

"lighten" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: lighten;
}

"color-dodge" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: color-dodge;
}

"color-burn" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: color-burn;
}

"hard-light" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: hard-light;
}

"soft-light" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: soft-light;
}

"difference" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: difference;
}

"exclusion" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: exclusion;
}

"hue" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: hue;
}

"saturation" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: saturation;
}

"color" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: color;
}

"luminosity" の使用例

css
#div {
  width: 300px;
  height: 300px;
  background: url("br.png"), url("tr.png");
  background-blend-mode: luminosity;
}

混合モードの比較

次の例の <div> には、 Firefox のロゴと線形グラデーションの 2 つの背景画像を設定してあります。その下に <select> メニューがあって background-blend-mode を変更することができ、それが <div> に適用されますので、様々な混合モードの効果を比較することができます。

HTML

html
<div></div>
<p>混合モードを選択してください。</p>
<select>
  <option selected>normal</option>
  <option>multiply</option>
  <option>screen</option>
  <option>overlay</option>
  <option>darken</option>
  <option>lighten</option>
  <option>color-dodge</option>
  <option>color-burn</option>
  <option>hard-light</option>
  <option>soft-light</option>
  <option>difference</option>
  <option>exclusion</option>
  <option>hue</option>
  <option>saturation</option>
  <option>color</option>
  <option>luminosity</option>
</select>

CSS

css
div {
  width: 300px;
  height: 300px;
  background:
    url(https://mdn.dev/archives/media/attachments/2020/07/29/17350/3b4892b7e820122ac6dd7678891d4507/firefox.png)
      no-repeat center,
    linear-gradient(to bottom, blue, orange);
}

JavaScript

js
const selectElem = document.querySelector("select");
const divElem = document.querySelector("div");

selectElem.addEventListener("change", () => {
  divElem.style.backgroundBlendMode = selectElem.value;
});

結果

仕様書

Specification
Compositing and Blending Level 2
# ltblendmodegt

ブラウザーの互換性

BCD tables only load in the browser

関連情報

様々な混合モードの他のウェブサイトにおける解説: