オーバーレイを画像に重ねることってありますよね。
画像の上にテキストを配置する場合、可読性を維持するため
画像とテキストの色のコントラストを保つために必要になったりします。
See the Pen
by notebook (@orange-notebook)
on CodePen.
今回はこのパグの画像に、
黒いオーバーレイをつける方法を2種類ご紹介したいと思います。
1つ目:backgroundプロパティに画像とオーバーレイを同時設定する
1つ目はbackgroundプロパティに
linear-gradient + 背景用の画像URLを組み合わせて指定する方法です。
こんなサンプルを作ってみました。
黒の透明度60%のオーバーレイになっています。
See the Pen
by notebook (@orange-notebook)
on CodePen.
またオーバーレイは半透明にする必要があるため、
linear-gradientの値は、透過できるrgba(red, green, blue, alpha)で表します。
HTML
HTMLはdivのみでOKです。
<div></div>
CSS
CSSの全体像はこんなかんじになっています。CSSを当てるのも、divタグのみです。
* {
margin: 0;
}
div {
/* オーバーレイの高さを指定 */
height: 100vh;
/* オーバーレイの色と画像の指定 */
background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, .6)), url("https://picsum.photos/id/1062/500/400");
/* 画像の位置やサイズの調整 */
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
*(ユニバーサルセレクタ)に関しては、
「margin: 0;」を指定することで、余白を除外しています。
1:コンテンツの高さを確保する
コンテンツがないと高さが出ないので、heightを設定して高さを確保します。
div {
/* オーバーレイの高さを指定 */
height: 100vh;
}
2:backgroundにオーバーレイと画像URLを指定する
そしてbackgroundプロパティに、
linear-gradientと画像のURLをカンマで分けて記載します。
順番は最初に「inear-gradient」、2番目に「画像URL」です。
div {
/* オーバーレイの色と画像の指定 */
background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, .6)), url("画像URL");
}
順番を逆にすると、オーバーレイが見えなくなってしまうので注意です。
3:画像のサイズ、位置、リピートなどの設定をする
最後に画像を調整するため、サイズ、位置、リーピートなどの詳細情報をbackgroundプロパティで設定します。
今回は下記のプロパティを使用しました。
- background-size
- background-repeat
- background-position
div {
/* 画像の位置やサイズの調整 */
background-size: cover;
background-repeat: no-repeat;
background-position: center;
}
これで完成です!
この方法は、1つのプロパティでほぼ一気に指定が済んでしまうので楽ですね。
2つ目:擬似要素::beforeか::afterでオーバーレイを作る
2つ目のやり方は、
「::before」もしくは「::after」のCSS擬似要素を使い、オーバーレイを作る方法です。
1つ目と見た目は同じサンプルを作りました。
See the Pen
by notebook (@orange-notebook)
on CodePen.
1つ目の方法では、画像とオーバーレイを同時に設定していましたが、
今回は背景画像→divタグ、オーバーレイ→CSS擬似要素で分けて実装していきます。
HTML
こちらもHTMLはdivのみでOKです。
<div></div>
CSS
CSSの全体像はこんなかんじになっています。
* {
margin: 0;
}
div {
/* オーバーレイの高さを指定 */
height: 100vh;
/* 背景画像を指定 */
background: url("https://picsum.photos/id/1062/500/400");
/* 画像の調整 */
background-size: cover;
background-repeat: no-repeat;
background-position: center;
/* オーバーレイの位置調整のためのpositionを指定 */
position: relative;
}
div::before {
/* contentプロパティは必須 */
content: "";
/* divを起点に位置を調整する */
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
/* オーバーレイを作成 */
background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, .6));
}
今回はdivと、擬似要素::beforeにCSSを当てていきます。
1:コンテンツの高さを確保する
先ほどと同様コンテンツがないと高さが出ないので、divタグに「height」を指定して高さを確保します。
div {
/* オーバーレイの高さを指定 */
height: 100vh;
}
2:backgroundプロパティで背景画像のURLを指定する
divタグにbackgroundプロパティで背景画像の設定をしていきます。
div {
/* 背景画像を指定 */
background: url("画像URL");
}
3:位置調整のための「position」プロパティを指定する
今回は「::before」に「position: absolute;」を使って位置を指定します。
divタグを位置の基準とするために「position:relative」を指定しておきます。
div {
/* オーバーレイの位置調整のためのpositionを指定 */
position: relative;
}
これでdivタグに対する設定は終わりです!
4:擬似要素「::before」にオーバーレイを指定する
今度は「::before」に下記プロパティを指定して、オーバーレイを作ります。
div::before {
/* contentプロパティは必須 */
content: "";
/* divを起点に位置を調整する */
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
/* オーバーレイを作成 */
background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, .6));
}
まず「::before」を使うときに必要な「content」プロパティの値を「空」指定します。
div::before {
/* contentプロパティは必須 */
content: "";
}
contentプロパティは値が空でも指定が必要なプロパティです。
次にdivタグと同じ大きさでオーバーレイをかぶせたいので、
「position: absolute;」に「top: 0;」「left: 0;」「width: 100%」「height: 100%;」
で、divタグと同じ大きさいっぱいに広げます。
div::before {
/* divを起点に位置を調整する */
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
最後にbackgroundプロパティにlinear-gradientで色を指定します。
div::before {
/* オーバーレイを作成 */
background: linear-gradient(rgba(0, 0, 0, .6), rgba(0, 0, 0, .6));
}
おわりに
いかがでしたでしょうか。
オーバーレイは何かと使う機会が多いですよね。
また今回使ったパグの画像ですが「Lorem Picsum」というサービスを使用しました。
使い方をこちらの記事にまとめているので、気になった方はのぞいてみてください。
最後までお読みいただき、ありがとうございました。