おはこんばんにちは!ノボルです。
背景画像を暗くしたいんだけど、加工するのがめんどくさい…。
画像加工ソフトを使わなくても、CSSだけでできるよ!
Web制作の際、上の文字などを読みやすくするために背景画像を暗くしたいときってありませんか?
しかし、写真を加工せず、CSSの「opacity」プロパティで暗くしようとすると、画像だけでなく文字も暗くなってしまいます。
そこで今回は、CSSだけで背景画像のみを暗くする方法をご紹介します!
CSSだけで背景画像のみを暗くする方法
実現したいこと
今回実現したいことは、以下の通りです。
See the Pen WNvrgRo by monkey d ruffy (@ruffy126) on CodePen.
背景画像のみが暗くなり、白色のテキストは暗くなっていないのがわかると思います。
さっそく、HTMLとCSSの解説をしていきます。
HTML
HTMLは以下の通りです。
1 2 3 4 5 6 7 8 9 10 |
<div class="background"> <div class="box"> <h1>Title</h1> <p>Subtitle</p> </div> </div> |
背景を指定するdiv.backgroundの中に、テキストの入ったdiv.boxを作成し、「position: absolute;」で浮かせます。
CSS
CSSは以下の通りです。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
html,body { height: 100%; margin: 0; } .background { background: url(https://drive.google.com/uc?export=view&id=1K8HSe_KEhiSH4pdNU6GL3gxUxA98viu-) no-repeat center; background-size: cover; position: relative; height:100%; } .background::before { /* 透過させた黒を重ねる */ background-color: rgba(0,0,0,0.5); /* どの範囲に重ねるかを指定 */ position: absolute; top: 0; right: 0; bottom: 0; left: 0; content: ' '; } .box { position: absolute; width: 100%; text-align: center; top:50%; left:50%; transform:translateY(-50%)translateX(-50%); -webkit- transform:translateY(-50%)translateX(-50%); margin:auto; } h1,p { color: #fff; } |
div.backgroundに背景画像を指定し、「position: relative ;」を適応します。
次に、div.backgroundのbefore要素に透過させた黒を重ねます。
(RGBaのアルファ値は、0〜1で透明度を指定)
div.boxを浮かせているので、 h1やpは暗くなりません。
ただし、div.boxを浮かせると、.background::beforeの大きさが0になってしまうため、
「context: ‘ ‘ ;」を指定してあげます。
以上です!
最後に
今回の記事では、CSSだけで背景画像のみを暗くする方法について解説しました。
Web制作で役立つテクニックなので、ぜひ使えるようにしましょう。
最後まで読んで頂き、ありがとうございました(o^^o)
コメント