jQueryのアニメーションslideUp Down 他

ヒダカ

2009年11月20日 18:44

jQueryでアニメーションの付いた画像の表示非表示が出来る命令の紹介その2。今回は縦にアニメーションする。

slideDown()

セレクタで指定したブロック要素をdisplay:noneからblockへ切り替える。その際のアニメーションは上から下。()内はミリ秒またはslow,norma,fastを指定できる。
コールバック関数も指定できる。

slideUp()

slideDown()の逆でdisplay:blockからnoneへ切り替える命令。アニメーションは下から上。他はslideDown()と同じ。

slideToggle()

slideDown()とslideUp()を交互に行う命令。他はshow()と同じ。

スクリプトを書いている途中で気が付いたが、アニメーションさせる要素のwidthが指定されていないと期待する挙動が出ない。

今回のslideUp()、slideDown()、slideToggle()は、アニメーションさせるimg要素にwidthが指定されていなかった場合、前回のshow()、hide()と同じ左上から右下(左下から右上)のアニメーションで表示・非表示された。
ASCII.jp:jQueryでAjaxを利用する基本チュートリアル|Web制作の現場で使えるjQuery UIデザイン入門を参考に、画像の表示・非表示を試してみました。

slideUpDownボタンで画像を縦に1枚ずつスライドさせながら表示・非表示させています。その順番はslideUp()とslideDown()をif文で場合分しけています。表示の時は茶→赤→黒→青で非表示は逆の青→黒→赤→茶です。

slideToggleボタンは上記と同じ動きをしますが、表示・非表示の順番はいずれも青→黒→赤→茶です。これはslideToggle()ではif文を使わない(使えない)からです。ただその分スクリプトはとてもスッキリします。

$(function(){$("#slideUDT button#UpDown").click(function(){if ($("#slideUDT img").css("display")=="block"){$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_01.png"]:not(:animated)').slideUp(250,function(){$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_02.png"]:not(:animated)').slideUp(250,function(){$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_03.png"]:not(:animated)').slideUp(250,function(){$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_04.png"]:not(:animated)').slideUp(250);});});});}else{$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_04.png"]:not(:animated)').slideDown(250,function(){$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_03.png"]:not(:animated)').slideDown(250,function(){$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_02.png"]:not(:animated)').slideDown(250,function(){$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_01.png"]:not(:animated)').slideDown(250);});});});};});});$(function(){$("#slideUDT button#Toggle").click(function(){$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_01.png"]:not(:animated)').slideToggle(250,function(){$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_02.png"]:not(:animated)').slideToggle(250,function(){$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_03.png"]:not(:animated)').slideToggle(250,function(){$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_04.png"]:not(:animated)').slideToggle(250);});});}); });})

slideUpDownslideToggle



コードは以下の通り。
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$("#slideUDT button#UpDown").click(function(){
if ($("#slideUDT img").css("display")=="block"){
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_01.png"]:not(:animated)').slideUp(250,function(){
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_02.png"]:not(:animated)').slideUp(250,function(){
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_03.png"]:not(:animated)').slideUp(250,function(){
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_04.png"]:not(:animated)').slideUp(250);
});
});
});
}else{
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_04.png"]:not(:animated)').slideDown(250,function(){
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_03.png"]:not(:animated)').slideDown(250,function(){
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_02.png"]:not(:animated)').slideDown(250,function(){
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_01.png"]:not(:animated)').slideDown(250);
});
});
});
};
});
});
$(function(){
$("#slideUDT button#Toggle").click(function(){
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_01.png"]:not(:animated)').slideToggle(250,function(){
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_02.png"]:not(:animated)').slideToggle(250,function(){
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_03.png"]:not(:animated)').slideToggle(250,function(){
$('#slideUDT img[src="http://www.naganoblog.jp/usr/webdesign/k_04.png"]:not(:animated)').slideToggle(250);
});
});
});
});
})
</script>
<div id="slideUDT">
<p><button id="UpDown">slideUpDown</button><button id="Toggle">slideToggle</button></p>
<img src="http://www.naganoblog.jp/usr/webdesign/k_04.png" width="90px" height="90px" />
</div>

関連記事