jQuery API の animate( properties, options ) は、カスタムアニメーションを実行するメソッド。1つ目の引数である properties に設定したCSSプロパティを、セレクターの要素に、徐々に変化するアニメーションで反映させる。duration 、easing などのオプションは、2つ目の引数である options にハッシュで指定できる。
記述方法
1つ目の引数である「properties / CSSプロパティ」に設定したCSSプロパティを、セレクターの要素に、徐々に変化するアニメーションで反映させる。
引数
- properties / CSSプロパティ
設定できるのは、値が数値型のCSSプロパティ。
「{ キー:値, キー:値 } 」のようにハッシュで指定する。
- キーの指定について
キャメルケースで表記する。例えば、「border-width」であれば、「borderWidth」と表記する。
- 値の指定について
数値:'10px'、'1.3em'、0.5 などのような数値。「+=」「-=」を数値の前に表記することで、現在値に加算減算する相対的指定もできる。
文字列:'toggle'、'show'、'hide'
- options / オプション
duration 、easing などのオプションを、ハッシュで指定。
- duration
速度(動作時間)。
ミリ秒単位の数字、もしくは、'slow'、'normal'、'fast' の文字列で指定。
例えば、2000 を指定すると、2秒間のアニメーションとなる。
- easing
イージング関数名。
'linear'、'swing' の文字列で指定。
イージング関数とは、加速度を加味したような動作パターンのこと。jQuery にデフォルトで用意されているのは、linear と swing のシンプルな動作パターンだけだが、jQuery Easing Plugin などの jQuery プラグインを導入することで、使える動作パターンを増やすことができる。
- complete
アニメーション完了後に呼び出したい関数を指定することができる。
- step
アニメーションの各ステップの後に呼び出したい関数を指定することができる。
- queue
エフェクトキューにアニメーションを配置するかどうかを、ブーリアン(論理型)で指定することができる。
false を設定すると、アニメーションをすぐに実行する。
true を設定すると、アニメーションをエフェクトキューに登録し、順番に実行する。
実装例(サンプル)
サンプルの動作について
- 赤いブロック部分をクリックすると、右側にオレンジ色のブロックが現れる。
- オレンジ色のブロックが完全に出現すると、オレンジ色のブロックの右側に、「表示しました。」と表示される。
- もう一度、赤いブロック部分をクリックすると、オレンジ色のブロックが左に動きながら消える。
- オレンジ色のブロックが完全に消えると、「表示しました。」の文字も消える。
実装例(サンプル)のソースコード
JavaScript
<!--
jQuery( function() {
jQuery( '#jquery-api-animate-complete-title' ) . click( function() {
jQuery( '#jquery-api-animate-complete-block-1' ) . animate(
{
width: 'toggle',
},
{
duration: 'slow',
easing: 'swing',
complete: function() {
jQuery( '#jquery-api-animate-complete-block-2' ) . animate(
{
opacity: 'toggle',
},
{
duration: 1000,
}
);
},
}
);
} );
} );
// -->
</script>
CSS
<!--
div#jquery-api-animate-complete-title {
float: left;
background-color: red;
height: 50px;
width: 100px;
text-align: center;
}
div#jquery-api-animate-complete-block-1 {
float: left;
background-color: #ff6600;
height: 50px;
width: 200px;
display: none;
}
div#jquery-api-animate-complete-block-2 {
float: left;
padding: 12px;
text-align: center;
display: none;
}
-->
</style>
HTML
<div id="jquery-api-animate-complete-block-1"></div>
<div id="jquery-api-animate-complete-block-2">表示しました。</div>
<div style="clear: both;"></div>