このブログではロゴや記事中の画像などにホバーすると一瞬だけ点滅する(光る)ような感じのエフェクトをつけているんですが、先日この実装方法についてご質問をいただいたので、その回答も兼ねてご紹介します。現在使用しているのはCSSを使用した方法ですが少し前はjQueryを使用して実装していたので、それぞれの方法を紹介したいと思います。
※以下の方法はブラウザ(特に古いバージョンのIE)によっては動きを確認できないものになるので、ひと通りのブラウザで問題ない動きにしたい場合は内容を変更する必要があります。
CSSで実装する
CSSで実装したい場合はopacity
を使った透過処理をanimation
と@keyframes
を使ったアニメーションと組み合わせる形で実装でき、以下のように記述します。
CSS
a:hover {
opacity: 1;
-webkit-animation-duration: 1s;
-webkit-animation-name: flash;
animation-duration: 1s;
animation-name: flash;
}
@-webkit-keyframes flash {
0% {
opacity: .4;
}
100% {
opacity: 1;
}
}
@keyframes flash {
0% {
opacity: .4;
}
100% {
opacity: 1;
}
}
上記を記述することで、a
要素にホバーした時に一瞬だけ点滅するようなエフェクトを実装することができます。
もっと点滅を早くしたいなど動きを変えたい場合は、animation-duration
の秒数や@keyframes
の0%
で指定しているopacity
の値を調整してみてください。
実際の動きは以下で確認できます。
jQueryで実装する
jQueryで実装する場合でも基本的にCSSとやっていることは同じで、opacity
を使った透過処理を.animate()
を使ってアニメーションしているものになります。
jQueryを使用するので予め読み込ませおき、以下のように記述します。
jQuery
$(function() {
$('a').mouseover(function(){
$(this).css('opacity', '.4').animate({'opacity': '1'}, 'slow');
});
});
もう少し動きを変更したいという場合は、slow
と記述されている部分や.css()
で指定しているopacity
の値を調整することで変更できます。
実際の動きは以下で確認できます。
もっと良い実装方法があるとかダメ出しとかあれば是非教えてください。