ノウハウ

CSSのみでマウスのロールオーバーでopacityだと背景が濃いと白くならない対処法

投稿日:

マウス

画像のロールオーバーと言えば、ウェブサイトでリンクが付いた画像やバナーにマウスを乗せた時に色が変わったり何かしら変化がある処理を言います。一昔前には画像のロールオーバー一つに javascript を使って大変面倒で html ソースもごちゃごちゃして読みにくくなってしまいました。

しかし、CSS もどんどん進化して今では画像のロールオーバーも CSS のみで行えるようになりました。html ソースも汚くならないですし、軽いので今ではほとんどがこちらの方法で行います。

その一つの方法が CSS3 の opacity というプロパティです。opacity は要素の透明度を0.0~1.0の間で指定します。

img:hover{
   opacity:0.8;
}

上のように CSS を記述すれば、画像の上にマウスが乗った時に画像の透明度が上がって白っぽくなり、あたかも画像が切り替わったように見えるという寸法です。IE9 以上に対応しています。

しかしこの方法は背景が白かった場合にのみ有効です。背景が黒かった場合、画像の透明度が下がると黒っぽくなってしまいます。背景が黒い場合、画像の透明度を下げるより明るさを上げてもらいたいものです。

filterプロパティのbrightness関数を使う

このような時には filter プロパティの brightness 関数を使うと背景が黒くてもロールオーバーで白くなります。こちらは明度を変えるプロパティです。0が最も暗く、数値が大きくなるほど明るくなります。1.0が元々の画像です。

img:hover{
     -webkit-filter: brightness(1.2);
     -moz-filter: brightness(1.2);
     -o-filter: brightness(1.2);
     -ms-filter: brightness(1.2);
     filter: brightness(1.2);
}

しかし、これは Chrome や Safari、Opera、Edge には対応していますが、IE には対応していません。IE に対応する為にはやはり、opacity か別の方法を考える必要があります。

-ノウハウ

Copyright© ウェブミスト(Webmist) , 2019 AllRights Reserved Powered by STINGER.