.slideToggle()

スライドダウンとスライドアップのアニメーションで、要素の表示・非表示を切り替えます。

.slideToggle( [duration] [, callback] ) 1.0追加

戻り値:jQuery

引数 説明
[duration] スライドアップ、またはダウンするアニメーション時間を指定します。
[callback] アニメーション完了後に実行したい関数を指定します。

.slideToggle( [options] ) 1.0追加

戻り値:jQuery

引数 説明
options

型:PlainObject

メソッドに渡すオプションのマップになります。

duration

型:Number or String 初期値:400

アニメーションがどれぐらいの時間、実行されるのかを決定する値を指定します。

easing

型:String 初期値:swing

トランジション(移り変わり)に使用されるイージング(easing)関数を表す文字列を指定します。

queue

型:Boolean or String 初期値:true

エフェクトのキューに、アニメーションを追加するか否かを示す真偽値を指定します。 falseの場合は、そのアニメーションは即座に開始されます。

jQuery1.7から、文字列で表現されるアニメーションをキューに追加するケースで、 queueオプションが文字列も受け付けることが可能になりました。 カスタムのキュー名が使用されている場合、アニメーションは自動的に実行されません。 開始するには、.dequeue("queuename")を呼びださなければいけません。

specialEasing

型:PlainObject

1つ以上のCSSプロパティを含むオブジェクトを指定します。 このCSSプロパティの値には、イージング(easing)を指定します。 (1.4 追加)

step

型:Function( Number now, Tween tween )

それぞれのアニメーション要素の、それぞれのアニメーションされるプロパティのために呼び出される関数を指定します。 この関数は、プロパティの値が設定される前にそれを変更する出来るように、Tweenオブジェクトを修正する機会を提供してくれます。

progress

型:Function( Promise animation, Number progress, Number remainingMs )

アニメーションの各ステップの後に呼び出される関数を指定します。 アプにメーションのプロパティの数に関係なく、アニメーションされる要素毎に1度だけ呼びだされます。 (1.8 追加)

complete

型:Function()

要素のアニメーションの完了時に一度だけ呼び出される関数を指定します。

start

型:Function( Promise animation )

要素のアニメーションが開始される際に呼び出される関数を指定します。 (1.8 追加)

done

型:Function( Promise animation, Boolean jumpedToEnd )

要素のアニメーションの完了の際に呼び出される関数を指定します。 (Promiseオブジェクトは解決(resolved)されています) (1.8 追加)

fail

型:Function( Promise animation, Boolean jumpedToEnd )

要素のアニメーションの完了失敗の際に呼び出される関数を指定します。 (Promiseオブジェクトは拒絶(rejected)されています) (1.8 追加)

always

型:Function( Promise animation, Boolean jumpedToEnd )

要素のアニメーションが完了、または完了せずに停止した際に呼び出される関数を指定します。 (Promiseオブジェクトは、解決(resolved)または拒絶(rejected)のいずれかになります。) (1.8 追加)

.slideToggle( [duration] [, easing] [, callback] ) 1.4.3追加

戻り値:jQuery

引数 説明
[duration] スライドアップ、またはダウンするアニメーション時間を指定します。
[easing] アニメーションの変化の種類を指定します。
[callback] アニメーション完了後に実行したい関数を指定します。

解説

.slideToggle()メソッドは一致した要素のheightをアニメーションします。 下の部分をスライドアップ・ダウンして、項目を表示したり覆い隠したりします。 要素が表示されている場合は隠し、隠されている場合は表示します。 displayプロパティは保存され、必要な際に復元されます。 もし、要素がinlinedisplay値を持つ場合、それを隠した後にまた表示すると、 再びinlineの状態で表示されます。 非表示のアニメーション後にheightが0に達すると、displayのプロパティはnoneに設定され、 その要素はページのレイアウトに影響を与えなくなります。

durationへの数値はミリ秒として扱われ、高い値はアニメーションを遅くし、低い値はアニメーションを速めます。 文字列の'fast''slow'は、 それぞれ200600ミリ秒のdurationとして扱われます。 他の文字列が指定された場合、またはdurationパラメーターが省略された場合、 デフォルトの400ミリ秒が使用されます。

下記のような単純な画像の要素をアニメーションさせることも可能です。

<div id="clickme">
  ここをクリック
</div>
<img id="book" src="book.png" alt="" width="100" height="123" />
$('#clickme').click(function() {
  $('#book').slideToggle('slow', function() {
    // アニメーション完了後に実行したい処理
  });
});

最初から要素が表示されていた場合、1度目のクリックでゆっくりそれを隠します。

0042 06 slidedown

2度目のクリックで、再びその要素を表示します。

0042 06 slideup

イージング(easing)

jQuery 1.4.3からは、イージング(easing)関数の文字列を任意に指定できるようになりました。 イージング関数は、アニメーションの異なるポイントでの進行の速度を指定するものです。

jQueryライブラリで指定できるイージングは、デフォルトのswingと、 一定のペースで進行するlinearのみです。 より多くのイージング関数を使用するにはプラグインが必要で、 特に有名なのはjQuery UIになります。

コールバック関数

指定された場合、アニメーションが完了した際に実行されます。 これは、続けて異なるアニメーションを実行したい際に便利です。 このコールバックは引数を送りませんが、thisにはアニメーションされているDOM要素が設定されています。 もし、複数の要素がアニメーションされている場合、 コールバックは一致した要素ごとに実行されるのであり、アニメーションごとに実行されるわけでは無いことに注意しなければいけません。

jQuery 1.6から.promise()メソッドを結合して、 deferred.done()メソッドで全ての一致している要素のアニメーションの完了時に、 単一のコールバックを実行することが可能になりました。(.promise()の例を参照)

アニメーションのOFF

  • .slideToggle()を含む全てのjQueryのエフェクトは、 jQuery.fx.off = trueにすることで実際にはdurationを0に設定することで、 グローバル全体でOFFにすることが可能です。 詳細は、jQuery.fx.offを参照してください。

デモ

各P要素を0.6秒かけてスライドアップ、スライドダウンします。

<!DOCTYPE html>
<html>
<head>
  <style>
  p { width:400px; }
  </style>
  <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
  <button>Toggle</button>

  <p>
    This is the paragraph to end all paragraphs.  You
    should feel <em>lucky</em> to have seen such a paragraph in
    your life.  Congratulations!
  </p>
<script>
    $("button").click(function () {
      $("p").slideToggle("slow");
    });
</script>

</body>
</html>

予め表示されているDIV、非表示にされているDIVが5pxのボーダーによって区切られており、 slideToggleによって一括で表示されているものはスライドアップによる非表示、 非表示にされているものはスライドダウンによる表示を繰り返します。

<!DOCTYPE html>
<html>
<head>
  <style>
  div { background:#b977d1; margin:3px; width:60px;
        height:60px; float:left; }
  div.still { background:#345; width:5px; }
  div.hider { display:none; }
  span { color:red; }
  p { clear: left; }</style>
<script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<div></div>
<div class="still"></div>
<div style="display:none;"></div>
<div class="still"></div>
<div></div>
<div class="still"></div>
<div class="hider"></div>
<div class="still"></div>
<div class="hider"></div>
<div class="still"></div>
<div></div>
<p><button id="aa">Toggle</button> There have been <span>0</span> toggled divs.</p>
<script>
  $("#aa").click(function () {
    $("div:not(.still)").slideToggle("slow", function () {
      var n = parseInt($("span").text(), 10);
      $("span").text(n + 1);
    });
  });
</script>
</body>
</html>

 Back to top

© 2010 - 2017 STUDIO KINGDOM