CSSで画像同士をグラデーションさせる方法【透過画像の作り方】

date_range 2022/12/11
GUARDIAN Creative BLOG
海辺の読書

CSSで複数の画像をグラデーションさせたり、透過させた画像を重ねる方法はどうしたらいいのでしょうか?


linear-gradientとbackground-imageを使えばすんなりできると思ったのですが、試してみたらできなかったので調べてみました!


結論から言うと、mask-imageというCSSのプロパティとlinear-gradientやradial-gradient等を組み合わせて使うことで実現できます。


まずはTOP画像のように、2枚の画像をグラデーションさせるHTML、CSSのコードを掲載します↓




海辺の画像を<img>タグで指定し、その上から読書する女性の画像を重ねています。


その際、.backgroundクラスにmask-imageをかけています。



注意点として、mask-imageはまだ新しめのCSSプロパティのため、ベンダープレフィックスをつけましょう。

-webkit-をつけることで主要なブラウザには対応できます。

caniuseのスクリーンショット




また、下記のように小さい画像をサブ的に表示させるのにも使えるかもしれませんね!


していることは同じで、.backgroundクラスにradial-gradientをかけているだけです。

海辺画像+右下に女性


また、円形ではなく下記の画像のように、四角形の四辺を透過させるにはどうしたらいいのでしょうか?

海辺画像+右下に女性2

これは色々調べたのですが、おそらく.backgroundクラスのmask-imageだけではできないと思われ、


下記のようにさらにもう一階層HTMLを入れ子にして、.vertical_gradと.horizontal_gradにそれぞれmask-image+linear-gradientをかける方法で実現できました。

(もっとスマートな方法を知っている方がいたら教えてください!)



まとめ

いかがでしょうか?

今回は、CSSだけを使って二枚の画像を透過グラデーションで重ね合わせる方法を解説しました。

割と使いどころが多そうな手法なのではないでしょうか。

一枚の画像としてフォトショップ等で重ねちゃうのも手ですが、弊社のようにCMSを使って画像を自由に差し替えられる仕様にする場合は、とても有用な手法だと思います!


ぜひ、ご参考になさってください!

人物

マーケティング部 クリエイティブプロダクト隊 クオリティコントロール班 班長

松村 晶(まつむら あき)


HTMLとCSSから始まり、Web関連の記事など広く更新していきます。

毎週2回(月・金予定)に欠かさず更新(できたらいいなと思っている)


今回使用した技術:HTML、CSS