CSS「background-blend-mode」:影、重ね合わせ、調和…魔法の技術でデザインを昇華


「background-blend-mode」の基礎知識

このプロパティの値には、以下の2種類があります。

  • スクリーン(screen)
    要素の色を背景色から明るくします。明るい色合いを重ねたい場合に役立ちます。
  • 乗算(multiply)
    要素の色を背景色と乗算し、暗い色合いになります。影や奥行きのある表現に最適です。

上記以外にも、「lighten」「darken」、**「difference」**など、様々なブレンドモードが用意されています。それぞれ異なる効果を生み出すので、目的やデザインに合わせて使い分けることが重要です。

実用的な例

例1:影のエフェクト

background-blend-mode: multiply; を使って、要素に影のようなエフェクトを簡単に追加できます。黒い要素を明るい背景に配置すれば、自然な影を表現できます。

例2:2つの画像を重ねたようなエフェクト

半透明の画像を2枚重ねて、奥行きのある表現を作り出すことができます。それぞれの画像の 「background-blend-mode」 を調整することで、様々な効果を表現できます。

例3:文字と背景の調和

暗い背景に白い文字を使用する場合、「mix-blend-mode」 を使って文字の色を自動的に調整できます。背景色に合わせて文字色が変化するため、読みやすく美しいデザインになります。

  • 「mix-blend-mode」 は、要素内の要素同士のブレンドにも適用できます。
  • 複数の背景画像を使用する場合、それぞれの画像に 「background-blend-mode」 を設定できます。重ねる順番によって、効果が変化します。
  • 「background-blend-mode」 は、比較的新しいプロパティなので、すべてのブラウザで完全対応しているわけではありません。必要に応じて、ベンダープレフィックスを忘れずに記述しましょう。


.shadow {
  background-color: rgba(0, 0, 0, 0.5); /* 半透明の黒色 */
  background-blend-mode: multiply; /* 乗算モード */
  width: 200px;
  height: 100px;
  text-align: center;
  color: white; /* 白いテキスト */
}

このコードは、黒い影付きのボックスを作成します。

2つの画像を重ねたようなエフェクト

.image1 {
  background-image: url("image1.jpg");
  background-blend-mode: color; /* 色モード */
  width: 300px;
  height: 200px;
}

.image2 {
  background-image: url("image2.jpg");
  background-blend-mode: screen; /* スクリーンモード */
  width: 300px;
  height: 200px;
  position: absolute;
  top: 0;
  left: 0;
}

このコードは、2つの画像を半透明で重ね合わせます。「image1.jpg」「color」 モードで、「image2.jpg」「screen」 モードでブレンドされます。

文字と背景の調和

.text {
  background-color: #333; /* 濃いグレー */
  color: white; /* 白いテキスト */
  background-blend-mode: color; /* 色モード */
  padding: 20px;
}

このコードは、暗い背景に白い文字を配置し、自動的に文字の色を調整します。

  • 以下のコードは、「background-blend-mode」 を様々な値に設定した例です。
.blend-multiply {
  background-blend-mode: multiply;
}

.blend-screen {
  background-blend-mode: screen;
}

.blend-overlay {
  background-blend-mode: overlay;
}

.blend-darken {
  background-blend-mode: darken;
}

.blend-lighten {
  background-blend-mode: lighten;
}

.blend-color-dodge {
  background-blend-mode: color-dodge;
}

.blend-color-burn {
  background-blend-mode: color-burn;
}

.blend-hard-light {
  background-blend-mode: hard-light;
}

.blend-soft-light {
  background-blend-mode: soft-light;
}

.blend-difference {
  background-blend-mode: difference;
}

.blend-exclusion {
  background-blend-mode: exclusion;
}

.blend-hue {
  background-blend-mode: hue;
}

.blend-saturation {
  background-blend-mode: saturation;
}

.blend-color {
  background-blend-mode: color;
}

.blend-luminosity {
  background-blend-mode: luminosity;
}
  • 以下のコードは、複数の背景画像に 「background-blend-mode」 を設定した例です。
.container {
  background-image: url("image1.jpg"), url("image2.jpg");
  background-repeat: no-repeat;
  background-position: 0% 0%, 100% 0%; /* 2つの画像を左右に並べる */
  background-blend-mode: multiply, screen; /* それぞれの画像に別々のブレンドモードを設定 */
}
  • 「background-blend-mode」 は、比較的新しいプロパティなので、すべてのブラウザで完全対応しているわけではありません。必要に応じて、ベンダープレフィックスを忘れずに記述しましょう。
  • 上記のコードはあくまで例であり、実際のデザインに合わせて調整する必要があります。


画像処理

「background-blend-mode」 で実現したい効果を、事前に画像処理ソフトで作成しておきます。Photoshopなどの画像編集ソフトで、レイヤーを重ねてブレンド効果を適用することで、「background-blend-mode」 と同様の効果を得ることができます。作成した画像を背景画像として設定することで、古いブラウザでも同様のデザインを表現できます。

SVGフィルター

SVGフィルターを使用して、「background-blend-mode」 のような効果を再現する方法もあります。ただし、SVGフィルターは**「background-blend-mode」** よりも複雑で、すべての効果を再現できるわけではありません。

fallback

新しいブラウザでは**「background-blend-mode」** を使用し、古いブラウザでは別のデザインを適用する**「fallback」**という方法もあります。CSSの @supports メディアクエリを使用して、ブラウザごとに異なるスタイルを適用することができます。

@supports (background-blend-mode: multiply) {
  .element {
    background-blend-mode: multiply;
  }
}

@supports not (background-blend-mode: multiply) {
  .element {
    background-image: url("image.jpg"); /* 代替画像 */
  }
}

ライブラリ

「background-blend-mode」 の代替となるライブラリもいくつか開発されています。これらのライブラリは、JavaScriptを使用して**「background-blend-mode」** のような効果を再現します。

これらのライブラリを使用する場合は、パフォーマンスやブラウザ互換性などの点を考慮する必要があります。

上記の代替方法以外にも、デザインの目的や状況に応じて、様々な方法が考えられます。例えば、シンプルなグラデーションであれば、CSSの linear-gradientradial-gradient プロパティを使用して表現することもできます。