jQueryでボタンなどに対してのロールオーバーエフェクトをつけるプラグインは多々ありますが、
プラグインのような大きなものでを使用するのではなく、もっと簡単・シンプルな方法で
ロールオーバーエフェクトをつけることが出来ないか実験してみました。
サンプルはテキストリンクボタンに背景画像を敷いて、
ロールオーバー時にアニメーションをつけるパターン。
まず、HTMLソースは以下のように<a>タグのみを並べます。
<a href="#">BUTTON A</a> <a href="#">BUTTON B</a> <a href="#">BUTTON C</a>
ボタンを整形するCSSは以下のようにしておきます。
a { width: 130px; height: 50px; line-height: 50px; font-size: 15px; font-weight: bold; color: #fff; text-align: center; position: relative; overflow: hidden; display: block; }
そして、このHTMLとCSSに対してjQueryで背景画像アニメーションの
エフェクトをつけると以下のようなSCRIPTになります。(もちろんjQueryファイルは別途必要)
<script type="text/javascript"> $(function(){ $("a").each(function(){ var txt = $(this).text(); $(this).append('<span>' + txt + '</span>'); $('a span').css({ top:'0', left:'0', width:'100%', height:'100%', position:'absolute', display:'block', cursor:'pointer', backgroundImage:'url(img/button.jpg)' }); $('a').css({backgroundImage:'url(img/button_ov.jpg)'}); }); $("a").hover(function(){ $(this).children('span').stop().animate({opacity:'0'},300); }, function(){ $(this).children('span').stop().animate({opacity:'1'},300); }); }); </script>
<a>タグの中に<span>タグを生成し、2つを重ね合わせ、
上位置には<span>タグ【背景画像:マウスアウト時】
下位置には<a>タグ【背景画像:マウスオーバー時】
という構成にしています。
そしてマウスオーバーで上位置になっている<span>タグに
アニメーション(ここではフェード)効果をつけます。
これらを実際に動かすと以下のように。
簡単にフェードを掛けるだけで、
単純にパパッと画像が切り替わるロールオーバーと違った印象を与えることができます。
フェード以外でも同じ構成で「.hover」時のアクションを変えるだけで
違った動きを見せることも可能。
マウスオーバーでスライドアウトパターンの場合のSCRIPT。
<script type="text/javascript"> $(function(){ $("a").each(function(){ var txt = $(this).text(); $(this).append('<span>' + txt + '</span>'); $('a span').css({ top:'0', left:'0', width:'100%', height:'100%', position:'absolute', display:'block', cursor:'pointer', backgroundImage:'url(img/button.jpg)' }); $('a').css({backgroundImage:'url(img/button_ov.jpg)'}); }); $("a").hover(function(){ $(this).children('span').stop().animate({top:'50px',opacity:'0'},200); }, function(){ $(this).children('span').stop().animate({top:'0',opacity:'1'},200); }); }); </script>
こっちを実際に動かすと以下のように。
ボタンのデザインにもよりますが、こんな動きもおもしろいかなと。
jQueryでIMGタグで表示している画像(ボタンなど)に対してエフェクトをつけるのは簡単ですが、
背景画像に対してエフェクトを掛ける場合は、意外と面倒な感じが。。。
プラグインを使わずに背景画像のロールオーバーをつける際に是非。。。
【関連記事】
jQueryでロールオーバー時の背景画像切り替えいろいろ