「CSS」だけで「画像」の上に黒色/白色を薄くかぶせて表示する

この記事は約3分で読めます。
記事内に広告が含まれています

イメージ

「ウェブサイト」を作成しているときに、背景画像の上に「」や「」をかぶせることで、画像の表示を薄くしたいことってありませんか?

Photoshop などで画像自体を編集すれば簡単ですが、後でかぶせる色を変更する可能性がある場合だと、画像を再編集するのが少し面倒……。

そこで今回は、「CSS」だけで実現する方法について書いていきます。

スポンサーリンク

使用する画像

サンプル用の画像

この画像を、「CSS」だけで「暗く(黒く)」したり、「明るく(白く)」したりしてみます。

実装方法

完成図

表示結果

HTML

<div class="image-block" id="dark"></div>
<div class="image-block" id="light"></div>
<div class="image-block" id="original"></div>

CSS

.image-block {
  width: 300px;
  height: 185px;
  background-image: url(bluesky.jpg);
  background-size: cover;
}

#dark  {
  background-blend-mode: overlay;
  background-color: rgba(0, 0, 0, 0.5);/* 半透明の黒色 */
}

#light {
  background-blend-mode: overlay;
  background-color: rgba(255, 255, 255, 0.5);/* 半透明の白色 */
}

background-blend-mode は、その要素にある「背景」の重なり方(描画)を制御するプロパティです。今回の例では、「背景画像」と「背景色」が重なったときの表示の挙動が変わります。

機能としては、Photoshop などの「画像編集アプリ」にある、レイヤーの「ブレンドモード」とだいたい同じです。

background-blend-mode: overlay; は、大雑把にいうと「背景色」を「背景画像」にかぶせて表示したような効果が出ます。

背景色 background-color には、半透明の黒色 rgba(0, 0, 0, 0.5) と半透明の白色 rgば(255, 255, 255, 0.5) をそれぞれ指定しているので、「背景画像」が暗くなったり明るくなったりするわけです。

【余談】 「overlay」の挙動について

今回 background-blend-mode で使った値 overlay は、暗い色と重なるときは multiply 、明るい色と重なるときは screen として機能するブレンドモードです。

つまり、#darkbackground-blend-mode: multiply; に、#lightbackground-blend-mode: screen; にしても、同じ挙動をします。

multiplyscreen を使い分けても良いですが、混同する不安がある人は overlay だけ覚えておきましょう。だいたい何とかなります。

【おまけ】 「要素」自体のブレンドモードを変える

上記の例では、一つの要素内で「背景画像」と「背景色」のブレンドモードを変えましたが、「要素」自体のブレンドモードを変えることもできます。

その場合は、mix-blend-mode という CSS プロパティを使いましょう。使用できる「値」は、基本的に background-blend-mode と同じです。

コメント

タイトルとURLをコピーしました