トップページ >  jQuery >  jQueryを使ったエフェクト
初版2011/10/19: 最終更新日2011/10/19
jQueryを使ったエフェクト
目次
jQueryを使ったエフェクト
基本的なエフェクト
スライド効果
フェード効果
アニメーション効果
jQueryを使ったエフェクト

CSSとタイマーを組み合わせれば、JavascriptでWEBページ/アプリケーションに視覚効果(エフェクト)をつけることができます。
しかし、オリジナルのJavascriptから視覚効果を組み込むのは複雑なコーディングを必要とします。

jQueryは、よく利用される視覚効果をメソッドとして用意しています。
これを用いることで、ブラウザに依らないで簡潔に視覚効果をつけることが可能です。

基本的なエフェクト

表示/非表示を切り替えることは、最も基本的な視覚効果です。

show([表示速度[,コールバック関数]])
要素のうち、非表示状態にあるものを表示します。
既に表示されている要素には変化ありません。
非表示の状態は、hideメソッド、CSS「display:none;」どちらでも対応します。
引数がない場合は、即座に表示されます。
第1引数 表示速度 を指定すると、アニメーションで表示されます。
表示速度は、アニメーションが完了するまでの時間をミリ秒で指定できます。
また「slow」「normal」「fast」などでも、表示速度をしてすることができます。
第2引数 コールバック関数 を指定すると、表示状態になった時(アニメーション効果が完了した時)に、指定したコールバック関数が実行されます。
返り値:jQueryオブジェクト

リスト1. show([表示速度[,コールバック関数]])

function Sample21(){
	jQuery('.Sample21 li:eq(0) span').show();
	jQuery('.Sample21 li:eq(1) span').show(5000);
	jQuery('.Sample21 li:eq(2) span').show('slow',function(){
		jQuery(this).css('background','skyblue');
	});
}

実装例

下記の3つは、同じshowメソッドですが、引数が異なります。

  1. ここは...
  2. ここは...
  3. ここは...
 
hide([非表示速度[,コールバック関数]])
要素のうち、表示状態にあるものを非表示にします。
既に非表示の要素には変化ありません。
引数がない場合は、即座に非表示になります。
第1引数 非表示速度 を指定すると、アニメーションで非表示になります。
非表示速度は、アニメーションが完了するまでの時間をミリ秒で指定できます。
また「slow」「normal」「fast」などでも、非表示速度をしてすることができます。
第2引数 コールバック関数 を指定すると、非表示状態になった時(アニメーション効果が完了した時)に、指定したコールバック関数が実行されます。
返り値:jQueryオブジェクト

リスト2. hide([非表示速度[,コールバック関数]])

function Sample22(){
	jQuery('.Sample22 li:eq(0) span').hide();
	jQuery('.Sample22 li:eq(1) span').hide(5000);
	jQuery('.Sample22 li:eq(2) span').hide('slow',function(){
		jQuery(this).show('slow');
	});
}

実装例

下記の3つは、同じhideメソッドですが、引数が異なります。

  1. ここは...すぐ非表示になります
  2. ここは...徐々に非表示なります
  3. ここは...徐々に非表示した後に、再表示します
 
toggle([switch/切替速度[,コールバック関数]])
要素のうち、表示状態にあるものは非表示に、非表示状態のものは表示にします。
引数がない場合は、即座に表示/非表示を切り替えます。
第1引数が ブール値の場合は、switch となります。
switch は、表示状態に関係なく、true ならば 表示、false ならば 非表示になります。

第1引数 切替速度(数値 または 文字列) を指定すると、アニメーションで表示切り替えします。
切替速度は、アニメーションが完了するまでの時間をミリ秒で指定できます。
また「slow」「normal」「fast」などでも、切替速度をしてすることができます。
第2引数 コールバック関数 を指定すると、アニメーション効果が完了した時に、指定したコールバック関数が実行されます。
返り値:jQueryオブジェクト

リスト3. toggle([switch/切替速度[,コールバック関数]])

var count23 = 0;
function Sample23(){
	jQuery('.Sample23 li:eq(0) span').toggle();
	jQuery('.Sample23 li:eq(1) span').toggle((count23 + 1) % 3 != 0);
	jQuery('.Sample23 li:eq(2) span').toggle(5000);
	jQuery('.Sample23 li:eq(3) span').toggle('slow',function(){
		jQuery('.Sample23 b').text(count23);
	});
	count23++;
}

実装例

下記の4つは、同じtoggleメソッドですが、引数が異なります。

  1. ここは...すぐに切り替わります
  2. ここは...ボタン押下が3回に1回消えます
  3. ここは...徐々に切り替わります
  4. ここは...徐々に切り替わった後に、切替回数をカウントします

切替回数は0回です。

スライド効果

ブロック要素の高さを変化させることで、スライドして、表示したり、非表示させる視覚効果を与えます。

slideDown([表示速度[,コールバック関数]])
要素を、上から下へスライドダウン(アニメーション)で表示します。
第1引数 表示速度 を指定すると、アニメーションで変化させます。
表示速度は、アニメーションが完了するまでの時間をミリ秒で指定できます。
また「slow」「normal」「fast」などでも、表示速度をしてすることができます。
省略できます。省略時は'normal'です。
第2引数 コールバック関数 を指定すると、アニメーション効果が完了した時に、指定したコールバック関数が実行されます。
返り値:jQueryオブジェクト

リスト4. slideDown([表示速度[,コールバック関数]])

function Sample34(){
	jQuery('.Sample34 li:eq(0)').slideDown();
	jQuery('.Sample34 li:eq(1)').slideDown(5000);
	jQuery('.Sample34 li:eq(2)').slideDown('slow',function(){
		jQuery(this).css('background','skyblue');
	});
}

実装例

下記の3つは、同じslideDownメソッドですが、引数が異なります。

 
slideUp([表示速度[,コールバック関数]])
要素を、下から上へスライドアップ(アニメーション)で非表示します。
第1引数 表示速度 を指定すると、アニメーションで変化させます。
表示速度は、アニメーションが完了するまでの時間をミリ秒で指定できます。
また「slow」「normal」「fast」などでも、表示速度をしてすることができます。
省略できます。省略時は'normal'です。
第2引数 コールバック関数 を指定すると、アニメーション効果が完了した時に、指定したコールバック関数が実行されます。
返り値:jQueryオブジェクト

リスト5. slideUp([表示速度[,コールバック関数]])

function Sample35(){
	jQuery('.Sample35 li:eq(0)').slideUp();
	jQuery('.Sample35 li:eq(1)').slideUp(5000);
	jQuery('.Sample35 li:eq(2)').slideUp('slow',function(){
		jQuery(this).slideDown('slow');
	});
}

実装例

下記の3つは、同じslideUpメソッドですが、引数が異なります。

  1. スライド表示します。速度はnormalです。
  2. 徐々にスライド表示します。
  3. スライド表示した後に、再表示します。
 
slideToggle([表示速度[,コールバック関数]])
要素を、スライドアップ/スライドダウンで切り替えます。
第1引数 表示速度 を指定すると、アニメーションで変化させます。
表示速度は、アニメーションが完了するまでの時間をミリ秒で指定できます。
また「slow」「normal」「fast」などでも、表示速度をしてすることができます。
省略できます。省略時は'normal'です。
第2引数 コールバック関数 を指定すると、アニメーション効果が完了した時に、指定したコールバック関数が実行されます。
返り値:jQueryオブジェクト

リスト6. slideToggle([表示速度[,コールバック関数]])

function Sample36(){
	jQuery('.Sample36 li:eq(0)').slideToggle();
	jQuery('.Sample36 li:eq(1)').slideToggle(5000);
	jQuery('.Sample36 li:eq(2)').css('background','');
	jQuery('.Sample36 li:eq(2)').slideToggle('slow',function(){
		jQuery(this).css('background','skyblue');
	});
}

実装例

下記の3つは、同じslideToggleメソッドですが、引数が異なります。

  1. スライド変化します。速度はnormalです。
  2. 徐々にスライド変化します。
  3. スライド変化した後に、背景色が変わります。
フェード効果

要素の透明度を変化させることで、フェード効果を持った表示/非表示を与えます。

fadeIn([表示速度[,コールバック関数]])
要素を、フェードイン(アニメーション)で表示します。
第1引数 表示速度 を指定すると、アニメーションで変化させます。
表示速度は、アニメーションが完了するまでの時間をミリ秒で指定できます。
また「slow」「normal」「fast」などでも、表示速度をしてすることができます。
省略できます。省略時は'normal'です。
第2引数 コールバック関数 を指定すると、アニメーション効果が完了した時に、指定したコールバック関数が実行されます。
返り値:jQueryオブジェクト

リスト7. fadeIn([表示速度[,コールバック関数]])

function Sample47(){
	jQuery('.Sample47 li:eq(0)').fadeIn();
	jQuery('.Sample47 li:eq(1)').fadeIn(5000);
	jQuery('.Sample47 li:eq(2)').fadeIn('slow',function(){
		jQuery(this).css('background','skyblue');
	});
}

実装例

下記の3つは、同じfadeInメソッドですが、引数が異なります。

 
fadeOut([表示速度[,コールバック関数]])
要素を、フェードアウト(アニメーション)で非表示します。
第1引数 表示速度 を指定すると、アニメーションで変化させます。
表示速度は、アニメーションが完了するまでの時間をミリ秒で指定できます。
また「slow」「normal」「fast」などでも、表示速度をしてすることができます。
省略できます。省略時は'normal'です。
第2引数 コールバック関数 を指定すると、アニメーション効果が完了した時に、指定したコールバック関数が実行されます。
返り値:jQueryオブジェクト

リスト8. fadeOut([表示速度[,コールバック関数]])

function Sample48(){
	jQuery('.Sample48 li:eq(0)').fadeOut();
	jQuery('.Sample48 li:eq(1)').fadeOut(5000);
	jQuery('.Sample48 li:eq(2)').fadeOut('slow',function(){
		jQuery(this).fadeIn('slow');
	});
}

実装例

下記の3つは、同じfadeOutメソッドですが、引数が異なります。

  1. フェードアウトします。速度はnormalです。
  2. 徐々にフェードアウトします。
  3. フェードアウトした後に、再表示します。
 
fadeToggle([表示速度[,コールバック関数]])
要素を、フェード効果(アニメーション)で表示/非表示を切り替えます。
第1引数 表示速度 を指定すると、アニメーションで変化させます。
表示速度は、アニメーションが完了するまでの時間をミリ秒で指定できます。
また「slow」「normal」「fast」などでも、表示速度をしてすることができます。
省略できます。省略時は'normal'です。
第2引数 コールバック関数 を指定すると、アニメーション効果が完了した時に、指定したコールバック関数が実行されます。
返り値:jQueryオブジェクト

リスト9. fadeToggle([表示速度[,コールバック関数]])

function Sample49(){
	jQuery('.Sample49 li:eq(0)').fadeToggle();
	jQuery('.Sample49 li:eq(1)').fadeToggle(5000);
	jQuery('.Sample49 li:eq(2)').css('background','');
	jQuery('.Sample49 li:eq(2)').fadeToggle('slow',function(){
		jQuery(this).css('background','skyblue');
	});
}

実装例

下記の3つは、同じfadeToggleメソッドですが、引数が異なります。

  1. フェードアウトします。速度はnormalです。
  2. 徐々にフェードアウトします。
  3. フェードアウトした後に、再表示します。
アニメーション効果

スライド効果やフェード効果以外に独自のアニメーション効果を作成することができます。

animate(params[,変化速度][,変化量][,コールバック関数])
animate(params,options)
要素にアニメーション効果をつけます。
アニメーション効果は、style属性を変化させて行います。
第1引数 params は、変化後の目標となるスタイルです。
オブジェクトの形で設定します。
※キャメルケースで表記されなければなりません。例えばmargin-leftは、marginLeftのように記述します。
スタイルは、基本数値で指定します。単位をつけることも可能です。
ex. height: "10em" など
数値の他、'show'(表示)、'hide'(非表示)、'toggle'(切替)にも対応します。
設定できるスタイルは、基本 数値でき指定できるものに限られます。
背景色(backgroudColor)は変化しません。
第2引数に 数値 または 文字列で指定すると、変化速度となります。
変化速度は、アニメーションが完了するまでの時間をミリ秒で指定できます。
また「slow」「normal」「fast」などでも、表示速度をしてすることができます。
省略できます。省略時は'normal'です。
第3引数 変化量(文字列) を指定すると、変化量を変更することができます。
変化量は、'swing'(デフォルト)と'liner' の2種類ですが、easingプラグインを用いると多彩な変化量を追加できます。
第4引数 コールバック関数 を指定すると、アニメーション効果が完了した時に、指定したコールバック関数が実行されます。
第2引数を オブジェクト型で、上記の「変化速度」「変化量」「コールバック関数」他をまとめて設定できます。
設定できるoptionsは以下の通りです。
duration
変化速度の指定します。
easing
変化量の指定します。
complete
アニメーション効果が完了した時に、指定したコールバック関数が実行されます。
step
アニメーション実行中のフレーム毎に呼び出されるコールバック関数を指定します。
現在の値から着地点になる値が増えている場合は0から1、減っていく場合は1から0の値が第1引数に渡されます。
queue
ここにfalseを指定すると、アニメーションはキューに保存されずに、ただちに実行されます。
初期値はtrueです。
返り値:jQueryオブジェクト

リスト10. animate

var width510 = '10%';
function Sample510(){
	width510 = (width510 == '100%') ? '10%' : '100%';
	jQuery('.Sample510 .panel').animate(
		{
			width : width510,
			opacity : 'toggle'
		},
		{
			duration : 10000,
			complete : function(){
				alert('完了!');
			},
			step : function(rate){
				var cnt = Math.floor( rate * 100 );
				jQuery(this).text(cnt + '%');
			},
			queue : false
		}
	);
}

実装例

0%

 
stop()
現在動作中のアニメーション処理を全て中止します。
他のアニメーションがqueueに入ってる場合、次のアニメーションが直ちに実行されることになります。
返り値:jQueryオブジェクト

リスト11. stop()

var sw511 = true;
var vc511 = true;
function Sample511(){
	if( sw511 ){
		jQuery('.Sample511 button').text('リスト11の停止');
		sw511 = false;
		jQuery('.Sample511 .face').animate(
			{
				marginLeft : vc511 ? '+=300px' : '-=300px'
			},
			{
				duration : 10000,
				complete : function(){
					jQuery('.Sample511 button').text('リスト11の実行');
					vc511 = vc511 ? false : true;
					sw511 = true;
				}
			}
		);
	}
	else
	{
		jQuery('.Sample511 .face').stop();
		jQuery('.Sample511 button').text('リスト11の実行');
		sw511 = true;
	}
}

実装例

(^o^)

 
queue([コールバック関数/キュー配列])
アニメーション キューを扱います。
引数無しの場合、最初の要素が持つqueueを、関数配列として返します。
第1引数が コールバック関数の場合、全ての要素のキュー配列の末尾に、新しいエフェクトを追加します。
第1引数が 配列の場合、全ての要素の持つキュー配列を、引数で渡したものに差し替えます。
渡すのは新たなキュー配列となる関数の配列になります。
空の配列「[]」を渡すと、すべてのキューを抹消します。
返り値:jQueryオブジェクト

リスト12. queue()

function Sample512(){
	// アニメーションを実行
	Queue512();
	jQuery('.Sample512 .rest').animate({marginLeft:'+=100px'},'slow',Queue512);
	jQuery('.Sample512 .rest').queue(function(){
		// アニメーションを追加
		jQuery(this).css('color','red');
		$(this).dequeue();
		Queue512();
	});
	jQuery('.Sample512 .rest').animate({marginTop:'+=10px'},'slow',Queue512);
	jQuery('.Sample512 .rest').queue(function(){
		// アニメーションを追加
		jQuery(this).css('color','blue');
		$(this).dequeue();
		Queue512();
	});
	jQuery('.Sample512 .rest').animate({marginLeft:'-=100px'},'slow',Queue512);
	jQuery('.Sample512 .rest').queue(function(){
		// アニメーションを追加
		jQuery(this).css('color','');
		$(this).dequeue();
		Queue512();
	});
	jQuery('.Sample512 .rest').animate({marginTop:'-=10px'},'slow',Queue512);
}
function Queue512(){
	// キュー内の数をカウント
	var q = jQuery(this).queue();
	var n = q.length;
	var s = 1;
	if( n > 1 ){
		s = 9 - n;
	}
	else
	{
		// キューをクリア
		jQuery(this).queue([]);
	}
	jQuery(this).text('ステップ ' + s);
}

実装例

ステップ 1

 
dequeue()
待ち行列の先頭から処理を取り出し、実行します。
返り値:jQueryオブジェクト
※使い方は、リスト12を参照してください。
 
jQuery.fx.off
この値にtrueを設定すると、jQueryが提供する全ての動作からアニメーション処理を外します。
その場合、変化速度に 0 が指定されたのと同様に、すぐに変化後の形になります。
この値をfalseにすれば、再びアニメーション処理は戻ります。