記事検索

検索ワードを入力してください。
Sky Tech Blog
CSS の​ mix-blend-mode で​背景に​馴染むUI表現を​実現する

CSS の​ mix-blend-mode で​背景に​馴染むUI表現を​実現する

UIデザインで背景画像の上に配置した要素を自然に馴染ませたい時に役立つ、CSSの`mix-blend-mode`プロパティをご紹介します。合成モードの種類や見え方の違いから、動的な背景での視認性確保といった活用例、使用時の注意点までを客観的に解説します。

UIデザインをしていると、背景画像の上に配置した要素の色を「いい感じ」に 馴染ませたい 、というシーンに出くわすことがあります。

例えば

こちらの2つの画像(背景+ロゴ)を重ね合わせ、以下のような表示にしたい場合です。

上の画像はよく見ると、ロゴが背景の青空の色に影響されて少し暗くなっているのがお分かりになりますでしょうか。
これは単に画像を半透明にして重ねているのではなくロゴの色を背景の色と 「乗算」 という計算式で掛け合わせて合成しているためです。

色同士を計算することで 馴染ませる 合成方法はデザインの現場でも広く活用されており専用のグラフィックツールで事前に合成してしまうのが簡単なのですがこの方法が通用するのは「背景が固定されている」場合に限定されます。

例えばユーザーが壁紙を自由に変えられるような動的なUIであったりコンテンツ内容によって背景が変わるようなケースでは当然ですが事前に合成することはできません。

こんな時簡単にページ上で画像を合成できるのが、CSSの mix-blend-mode プロパティです。

どう​使う?

mix-blend-mode を使うと重なり合った要素同士の色を特定のルールで計算してから決めることができ、画像の合成が実現できます。

グラフィックツールでおなじみの「乗算」「スクリーン」「オーバーレイ」といった 画像の合成モードを、CSSだけで実現できるイメージです。

具体的には下記のようなモードが指定可能です。

モード 説明
normal 通常の描画。合成なし(デフォルト)
multiply 乗算。背景と掛け合わせて暗くなる
screen 乗算と逆の処理で明るくなる
overlay 背景の明暗に応じて multiply もしくは screen が適用される
darken より暗いほうの色が採用される
lighten より明るいほうの色が採用される
difference 背景と要素の色の差を取り反転するような効果
exclusion difference に似るがすこしマイルドな効果
color-dodge 覆い焼き操作。背景を明るくして差を小さくする
color-burn 焼き込み操作。背景を暗くして差を大きくする
hard-light overlay の演算対象が逆になる
soft-light hard-light より柔らかく合成される
hue 色相のみを合成する
saturation 彩度のみを合成する
color 色相と彩度を合成する
luminosity 輝度のみを合成する

たとえば、先ほどの例のように画像を multiply(乗算)で合成するCSSは次のようになります:

.image { mix-blend-mode: multiply;}

このCSSを重ねる方の画像に適用すると、その下にある背景と乗算合成されて表示されます。

以下はそれぞれのモードにおける見え方の違いのサンプルです。

各モードの詳細は MDN Web Docs のリファレンス が参考になりますが、まずはサンプルコードや開発者ツールで値をいろいろ変えながら試してみるのがおすすめです。

変化の​ある​背景に​対する​視認性の​確保への​応用

mix-blend-mode の活用シーンの一つが、背景が動的に変わるUIにおける 視認性の確保 です。

たとえば、次のようなケースを考えてみてください:

  • ダッシュボードの壁紙がユーザー設定で変わる
  • 時期によってテーマとなる背景写真が変わりその上にUIを配置する必要がある
  • グラフの色が動的に決まり、その上に文字や線を描画する

こういった状況では「背景によって文字やアイコンが見えづらくなる」という問題が起きがちです。
背景が明るすぎると白いアイコンが溶け込んでしまったり、暗すぎると黒いテキストが読めなくなったり…。

こういう時例えば、mix-blend-mode: difference を活用すると、背景の明暗に応じて要素の色が自動的に反転するような効果を得られます。

.logo {  mix-blend-mode: difference;}

上記の例では白いロゴが背景色に応じて自動的に変化し、背景が明るければ暗く、背景が暗ければ明るく表示されます。
これによりどんな背景でも一定の視認性を保つことができます(デザイン性は議論があると思いますが…)。

もちろん万能ではありませんが、アイコンや装飾的な要素・小さめのテキストなどには効果的です。

使う​際の​注意点

mix-blend-mode は便利なプロパティですが、いくつか押さえておきたい点もあります:

  • 背景に依存する
    背景が複雑なグラデーションや写真の場合、意図しない色になってかえって視認性が落ちることもあります。想定される背景パターンで可能な限り結果を確認しておくようにしたいです。
  • パフォーマンス
    現代のブラウザでは基本的に問題なく動作しますが、広範囲にわたる画像を使用する場合・アニメーションと組み合わせる場合・多数の要素に同時に適用する場合など描画負荷が高まりやすいシナリオでは、旧世代のスマートフォンなどパフォーマンスに制約のある環境も考慮し描画負荷への影響を確認しておくと安心です。

このような懸念もあるため、背景が固定されるような場合のデザインとしての利用であれば CSSではなくデザインツールで合成しておく のがやはり筋だと思います。

mix-blend-mode はUIデザインにおいていざという時意外と頼りになるプロパティです。
特にユーザーが配置した画像の上にUIや文字列を表示するようなケースでは背景画像への影響を最小限に抑えながら視認性を確保できるため、私たちが提供するサービスにおいても利用を検討したことがありました。

「こんな方法もあるんだ」と頭の片隅に置いていただけるとここぞという時役に立つかもしれません。
この記事が皆さんの一助となれば幸いです。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム