Web制作 CSS

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

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

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

今だけ!5大無料特典あり🎁

コーディングの時給アップにはこちら!


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.

以上になります。

 

コーディングの時給と作業効率を上げる!
2年間の実務で実際に使ったコードをまとめた『コーディング&WordPressメモまとめ集』をBrainで公開しています。
  • コピペで使えるWordPressの各テンプレート
  • 実務でよく使う見出し一覧
  • 実務でよく使うテキストのhoverアニメーション
  • 実務でよく使うボタン内の矢印9種類
  • Contact Form 7の色々・・・
などなど、他にもコピペで使えるコードがたくさん載せてあるので、時短=時給アップに繋がります。
さらに『コードのまとめ方が参考になった』というレビューも多数頂いているので、これを元に自分なりの"メモまとめ集"を作るという使い方も出来ます。
740部以上販売し、レビューは410件以上あるので、気になる方は以下のボタンからチェックしてみて下さい👇

今だけ!5大無料特典あり🎁

販売ページとレビューを見てみる


ブログランキング・にほんブログ村へ
  • この記事を書いた人

じゅんぺい

タイ・バンコク在住のWeb制作フリーランス兼ブロガー▶︎37歳からWeb制作を開始▶︎コーディングとWordPressのオリジナルテーマ制作でこれまで80件以上納品▶︎Web制作中心の当ブログは月間最高9万PV▶︎Twitterのフォロワーは6300人▶︎コーディングとWordPressのコンテンツを販売し、3日で500部突破&250万円&人気1位獲得 → 累計750部&450万円突破

-Web制作, CSS