CSS Web制作

【CSS】画像をhoverしたら透過させた黒いマスクをかけて文字を表示させる方法

2021年11月17日

※ 当サイトではアフィリエイト広告を利用しています

画像をhoverしたら黒いマスクかけて文字を表示させたいけど、どうしたらいい?

これは実務でも良くあるので、必ず出来るようにしておきましょう。

じゅんぺいブログは、Web制作コーディングWordPress制作)の技術記事を中心に、約500記事公開しています。ぜひ他の記事も参考にしてみてください!
完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適です。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇
(有料になっていたらすいません🙇‍♂️)

\ 完全無料 /

ZeroPlus Gate公式サイト

毎日先着制!

CSSで画像をhoverしたら透過させた黒いマスクをかけてテキストを表示させる方法

今回は以下の2つをご紹介します。

  1. hoverしたら文字を表示
  2. 文字は最初から表示

 

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したら透過させた黒いマスクをかけて文字を表示させる方法を解説しました。

実務でもわりとよくある実装なので、実装できるようにしておくといいと思います。

以上になります。

この記事が役に立ったと思ったら、シェアボタンからX(旧Twitter)などにシェアすると、いいねされてフォロワーが増えたりすることがあるよ!

 

  • この記事を書いた人

じゅんぺい

37歳からWeb制作とブログ開始。Web制作歴5年目でコーディングとWordPressオリジナルテーマ制作が中心。これまで120件以上を納品。当ブログ月間最高15万PVで、370記事以上はWeb制作の技術記事。コンテンツ販売→累計売上1200万円&1500部超え。X(旧Twitter)フォロワー7200人以上。2024年3月からブログの経験を活かしてライターとしても活動を開始。

-CSS, Web制作