画像の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);
}
}
}
}