HTML&CSS

【CSS】背景画像(background-image)のみ透過させる方法

アイキャッチ画像

こんにちは!

opacityを使って背景を透過させようとした場合、文字やボタンまで透過していませんか?

See the Pen YzzmvoR by まるたつ@Webデザイナー目指す🐷 (@marutatsu698) on CodePen.

background-colorの場合はrgbaで回避できますが、background-imageの場合はうまくいきません。

今回はこれを防ぐための3種類の方法を紹介します。

  1. div要素で囲って、rgbaを使う
  2. 擬似要素を使う
  3. background-blend-modeを使う

1.div要素で囲って、rgbaを使う

背景画像を適用しているクラスの中身をdiv要素で囲い、rgbaを適用すれば背景画像のみ透過させることができます。レイヤーを重ねる感じですね。

See the Pen abbeROZ by まるたつ@Webデザイナー目指す🐷 (@marutatsu698) on CodePen.

2.擬似要素を使う

擬似要素にopacityで透過した背景画像を配置する方法です。こちらはHTMLを書き換える必要がなく、CSSのみで可能です。

See the Pen QWWeBbN by まるたつ@Webデザイナー目指す🐷 (@marutatsu698) on CodePen.

3.background-blend-modeを使う

CSSプロパティのbackground-blend-modeで背景画像にオーバーレイ効果をかける方法です。

See the Pen pooMxyM by まるたつ@Webデザイナー目指す🐷 (@marutatsu698) on CodePen.

一番簡単ですっきりしていますが、残念ながらIE, Edgeは未対応です。

IE爆発しろ(^q^)

まとめ

それぞれ一長一短あると思いますが、状況に合わせて使ってみてください。

ちなみに私は2の擬似要素を使っています。

ABOUT ME
まるたつ
30代未経験からWebデザイナーを目指しています。 自分用の備忘録としてブログにまとめていますが、Webデザインを学習される方の一助になれれば幸いです。 内容に不備があればご連絡いただけると助かります。