これは実務でも良くあるので、必ず出来るようにしておきましょう。
(有料になっていたらすいません🙇♂️)
CSSで画像をhoverしたら透過させた黒いマスクをかけてテキストを表示させる方法
今回は以下の2つをご紹介します。
- hoverしたら文字を表示
- 文字は最初から表示
hoverしたら文字を表示させる場合
まずはHTMLから見ていきます。
<div class="sample-img">
<img src="画像パス" alt="">
<div class="hover-mask">
<p>
テキストが入ります。
</p>
</div>
</div>
次にCSSです。
.sample-img {
cursor: pointer;
max-width: 500px;
position: relative;
width: 100%;
}
.sample-img img {
height: auto;
width: 100%;
}
.hover-mask {
align-items: center; /* テキストの中央揃え */
background: rgba(0, 0, 0, .5); /* マスクの色(黒の50%) */
bottom: 0;
color: #fff; /* テキストの色 */
display: flex; /* テキストの中央揃え */
height: auto;
justify-content: center; /* テキストの中央揃え */
left: 0;
opacity: 0; /* 最初は透明(非表示) */
position: absolute;
right: 0;
top: 0;
transition: opacity .6s ease; /* ゆっくりopacityのみへ変化させる */
width: 100%;
}
.hover-mask:hover {
opacity: 1; /* hoverしたら透過しない(表示させる) */
}
.hover-mask p {
width: 80%; /* テキストを横幅いっぱいにならないようにする */
}
基本的にはコピペして貰えれば使えますが、画像のサイズ、文字の幅などは適宜変更して下さい。
こちらがサンプルになります。
See the Pen
画像にマスク by junpei (@junpei-sugiyama)
on CodePen.
文字は最初から表示させる場合
次は文字は最初から表示させたい場合です。
実務ではこちらの方がよく使う気がします。
コードは先ほどと少し異なります。
<div class="sample-img">
<img src="画像パス" alt="">
<p>
テキストが入ります。
</p>
</div>
.sample-img {
cursor: pointer;
max-width: 500px;
position: relative;
width: 100%;
}
.sample-img img {
height: auto;
width: 100%;
}
.sample-img::before {
background: rgba(0, 0, 0, .5); /* マスクの色(黒の50%) */
bottom: 0;
content: '';
height: auto;
left: 0;
opacity: 0; /* 最初は透明(非表示) */
position: absolute;
right: 0;
top: 0;
transition: opacity .6s ease; /* ゆっくりopacityのみへ変化させる */
width: 100%;
}
.sample-img:hover::before {
opacity: 1; /* hoverしたら透過しない(表示させる) */
}
.sample-img p {
align-items: center; /* テキストの中央揃え */
bottom: 0;
color: #fff; /* テキストの色 */
display: flex; /* テキストの中央揃え */
justify-content: center; /* テキストの中央揃え */
left: 0;
margin: auto;
position: absolute;
right: 0;
top: 0;
width: 80%; /* テキストを横幅いっぱいにならないようにする */
}
今回のマスクは擬似要素を使っています。
それに伴いマスクのdivタグはないので、pタグをposition: absolute;
で画像の中央に配置しています。
こちらがサンプルになります。
See the Pen
Untitled by junpei (@junpei-sugiyama)
on CodePen.
まとめ
今回は画像をhoverしたら透過させた黒いマスクをかけて文字を表示させる方法を解説しました。
実務でもわりとよくある実装なので、実装できるようにしておくといいと思います。
以上になります。