4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

画像のhover時に透けた黒を被せるCSSと、それをmixin化してみた

Last updated at Posted at 2018-01-13

画像のhover処理について

リンク付きの画像のhover処理ってどうしてますか?

hover用の画像を毎回作成するのは絶対に嫌ですよね?
opacityで透過させるのは簡単でいいですが、薄くすることしかできません。
(僕が知らないだけかもしれませんが…)
サイト全体のhover処理が、元の色より薄くするものであれば、これでいいかもしれませんが、逆に濃くするという場合もあります。

作成したmixin

こんなとき、画像の親クラスに対して、mixinを読むだけで対応できたらいいと思い作ってみました。
そんなに大したものではないですが、こんな感じです。

@mixin hover_black {
  
  position: relative;
  display: inline-block; //blockの方が使い勝手良ければ変更可

  &:hover {
    &:before {
      position: absolute;
      content: '';
      display: block;
      z-index: 100;
      top: 0;
      right: 0;
      bottom: 0;
      left: 0;
      background: rgba(0, 0, 0, 0.1);
    }
  }
  
  @content;
}

解説

解説する程のものではないですが、簡単に解説します。
見たままですが、hover時にbeforeで擬似要素を置きます。
top, right, bottom, leftをそれぞれ0を指定することで、その要素いっぱいに広がるようにします。
これに対して、background: rgba(0, 0, 0, 0.1);で、hover時の色と透け感を指定しています。
ここの値を変更すれば、お好みの状態にできます。

使用例

<a class="link" href="">
  <img class="imgLink" src="" alt="" width="" height="" />
</a>
.link {
  @include hover_black;
}

もし「この画像のhover処理だけ色変えたい」みたいなことあれば、mixinの最後に@content;をつけておいたので下記のように指定してください。
これで上書きができます。

.link {
  @include hover_black {
    &:hover {
      &:before {
        background: rgba(255, 0, 0, 0.1);
      }
    }
  }
}
4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?