先日紹介した「jQueryでボタンなどのロールオーバー時、背景画像にエフェクトを掛ける方法」の
マウスオーバー時の背景画像切り替えパターンを
別バージョンでいくつか作ってみたので加えて紹介してみます。

HTMLソースとCSSなどについては全く変更なしですが
念のため、記載しておくと

◆HTML

<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;
}

こんな感じです。

このテンプレートパターン(あくまでテンプレなのでもちろん変更することも可能)で
ロールオーバー時にアニメーションエフェクトを付けます。
(先日のエントリーでは単純なフェードとスライドダウンの2パターン)

◆パターン1

ボタン全体がスロットマシーンのように動くアニメーション。
この動作SCRIPTは以下のようになります。

$(function(){
	var linkWidth = $('a').width();
	var linkHeight = $('a').height();
	$("a").each(function(){
		var txt = $(this).text();
		$(this).prepend('<span class="ov">' + txt + '</span>');
		$(this).prepend('<span class="out">' + txt + '</span>');
		$('a span').css({
			width:(linkWidth),
			height:(linkHeight),
			display:'block',
			cursor:'pointer',
			backgroundImage:'url(img/button.jpg)'
		});
		$('a span.ov').css({backgroundImage:'url(img/button_ov.jpg)'});
	});
	$("a").hover(function(){
		$(this).children('span.out').stop().animate({marginTop:'-' + linkHeight + 'px'},300);
	}, function(){
		$(this).children('span.out').stop().animate({marginTop:'0'},300);
	});
});

前回ではボタンの幅や高さは「%」で扱っていましたが
今回は変数に入れています。

アニメーションで動かす値をSCRIPT側では持たず、
CSS側で指定する値を見て制御できる方が、
使うたびにわざわざSCRIPTをいじらなくてもすむように。

そして続いて…

◆パターン2

パターン1の横バージョンといったところ。
あまり使いどころはないかもしれませんが、
ちょっと試してみたかったパターン。

このパターン2のSCRIPTは以下のような感じに。

$(function(){
	var linkWidth = $('a').width();
	var linkHeight = $('a').height();
	$("a").each(function(){
		var txt = $(this).text();
		$(this).prepend('<span class="ov">' + txt + '</span>');
		$(this).prepend('<span class="out">' + txt + '</span>');
		$('a span').css({
			top:'0',
			left:'0',
			width:(linkWidth),
			height:(linkHeight),
			display:'block',
			position:'absolute',
			cursor:'pointer',
			backgroundImage:'url(img/button.jpg)'
		});
		$('a span.ov').css({
			left:(linkWidth),
			backgroundImage:'url(img/button_ov.jpg)'
		});
	});
	$("a").hover(function(){
		$(this).children('span.out').stop().animate({left:'-' + linkWidth + 'px'},300);
		$(this).children('span.ov').stop().animate({left:'0'},300);
	}, function(){
		$(this).children('span.out').stop().animate({left:'0'},300);
		$(this).children('span.ov').stop().animate({left:linkWidth + 'px'},300);
	});
});

最後は…

◆パターン3

マウスオーバー画像をブラインドの様に上からスライドインさせています。

このパターン3のSCRIPTは以下のような感じに。

$(function(){
	var linkWidth = $('a').width();
	var linkHeight = $('a').height();
	$("a").each(function(){
		var txt = $(this).text();
		$(this).prepend('<span class="ov">' + txt + '</span>');
		$(this).prepend('<span class="out">' + txt + '</span>');
		$('a span').css({
			top:'0',
			left:'0',
			width:(linkWidth),
			height:(linkHeight),
			display:'block',
			position:'absolute',
			cursor:'pointer',
			backgroundImage:'url(img/button.jpg)'
		});
		$('a span.ov').css({
			height:'0',
			backgroundImage:'url(img/button_ov.jpg)'
		});
	});
	$("a").hover(function(){
		$(this).children('span.ov').stop().animate({height:(linkHeight)},300);
	}, function(){
		$(this).children('span.ov').stop().animate({height:'0'},300);
	});
});

ひとまずはこんな感じです。

CSSとjQueryを組み合わせば単純なマウスオーバーでも様々な演出を加えることが可能になり、
今回紹介した他にも応用すればまだまだいろんなパターンを実現することができます。
jquery.easing.jsとかを使えばまた違った演出を加えることも。
やっぱjQueryはおもしろい。

ご参考までに。。。

【関連記事】
jQueryでボタンなどのロールオーバー時、背景画像にエフェクトを掛ける方法

  • このエントリーをはてなブックマークに追加
BlackFlag
FOLLOW

Related Posts

Comments (2)







コメント内容

※コメントにHTMLタグを直接入力しないでください。
※HTMLタグを入力する際はタグ一つ一つの括弧「<」「>」を全角に変換して入力してください。
コメントは承認制になっているのですぐには反映されません。コメント頂いた内容については出来る限り早めの対応を心掛けていますが、時期によって返答が遅くなってしまうことがありますので、何卒ご了承ください。
» コメントについてのご注意  |  » ライセンスに関して

jQueryでロールオーバー時の背景画像切り替えいろいろ

Hatena Bookmark
Popular Entries
Recent Entries
PR
Facebook
Animal Protection
  • 福島被曝牛支援のお願い
  • NO FUR
Books
  • jQuery Technical Note
  • 外掛OUT! jQuery 高手精技
Partner