見出し画像

jQueryで要素の簡単なアニメーション

jQueryを使うと要素をアニメーションさせることもできます。

今回はjQueryでアニメーションを簡単に実装するいくつかの方法をご紹介します。

表示と非表示

要素の表示非表示でアニメーションさせるには以下のコードを使用します。

$("#target").show(); // 表示

$("#target").hide(); // 非表示

この関数を使うことで対象の要素はフェードと同時に少しスライドしながら表示又は非表示されます。

以下のように引数を指定することも可能です。

$("#target").show(1000); // 1秒間のアニメーションで表示

$("#target").show(1000, function() {
    // 表示後に実行
}); // 1秒間のアニメーションで非表示した後関数を実行

アニメーションの長さ、アニメーションが終了した後の処理を指定できます。

jQueryは一行ずつ実行されますが、表示非表示などを行うための関数はアニメーションをお願いしているだけなので、アニメーションが終わっていなくても次の行を実行できます。

そのため、終わってから実行してほしいことに関しては、引数で関数を渡して実行させることがあります。

終了時に実行される関数のことをコールバック関数などと呼びます。

また、表示非表示を切り替えるtoggleという関数も存在します。

$("target").toggle();

これらと同じように他にも表示非表示のアニメーションができる以下のような関数があります。

フェード: fadeIn、fadeOut、fadeToggle、fadeTo
スライド: slideDown、slideUp、slideToggle

fadeToは現在の透明度から引数で指定する透明度までアニメーションする関数です。

$("#target").fadeTo(
    0.5,
    1000,
    function(){ // アニメーション終了時に実行される }
); // 50%まで1秒でアニメーション

アニメーション

jQueryにはそれ以外にもCSSの値を指定することによりアニメーションさせる方法が用意されています。

$("#target").animate({
    width: "2rem",
    height: "4rem"
});

targetの幅と高さが指定の値になるまでアニメーションするコードです。これも引数としてアニメーションの長さと終了時の処理を指定できます。

widthやheightなど引数で渡すオブジェクトが持つキーの名前はcssを基準にしています。ちなみに以下のコードでアニメーションなしでcssを変更することもできます。

$("#target").css({
    backgroundColor: "red",
    color: "white"
});

どちらの場合でも単語の区切りをCSSの書き方であるハイフンから大文字に変える必要があります。

background-color -> backgroundColor
font-size -> fontSize

また、animate関数では現在の数値から相対的に変化させることも可能です。以下のコードではaction-buttonがクリックされるたびに、tagetの幅が2remずつ大きくなります。

$("#action-button").click(function(){
    $("#target").animate({
        width: "+=2rem"
    });
});

また、アニメーションを止める関数も存在します。

$("#target").stop();

これまで紹介してきた関数は戻り値として$(selector)と同じオブジェクトを返すので、複数実行したいときは以下のようにも書けます。

// targetの背景色を緑にし、targetをスライドさせながら非表示にする
$("#target").css({backgroundColor: "green"}).slideUp(1000);

こう書くことで、毎回$(selector)を書く時よりも要素を検索する処理が減るので、より高速に実行できます。これはチェーンと呼ばれる方法です。

この記事が参考になれば幸いです!