animateメソッドを使ってjQueryでアニメーションを実装する方法
プログラミング初心者向けに、jQueryのanimateメソッドを使ってアニメーションを実装する方法を解説しています。実際にアニメーションを作りながら説明しているので、サイトに動きを出したい方はぜひ参考にしてみてください。
テックアカデミーマガジンは受講者数No.1のプログラミングスクール「テックアカデミー」が運営。初心者向けにプロが解説した記事を公開中。現役エンジニアの方はこちらをご覧ください。 ※ アンケートモニター提供元:GMOリサーチ株式会社 調査期間:2021年8月12日~8月16日 調査対象:2020年8月以降にプログラミングスクールを受講した18~80歳の男女1,000名 調査手法:インターネット調査
JavaScriptのライブラリであるjQueryのanimateメソッドを使ってアニメーションを実装する方法について、テックアカデミーのメンター(現役エンジニア)が実際のコードを使用して初心者向けに解説します。
animateメソッドを利用すると、簡単にアニメーションを適用できます。
実務で、ちょっとアニメーション処理を加えたい時に利用してみてください。
目次
そもそもJavaScriptについてよく分からないという方は、JavaScriptとは何なのかについて解説した記事を読むとさらに理解が深まります。
animateメソッドとは
animateメソッドはその名の通りアニメーションを実装するためのメソッドです。
animateメソッドでは、オブジェクトの移動や透過率などを変更できます。
アニメーションを実装するためのメソッドは何個か存在しますが、簡単なアニメーションの場合、animateメソッドが一番使用されています。
田島メンター!アニメーションのように要素を動かしたり、変化させたりできますか?
jQueryのanimateメソッドがいいね。取得した要素を、指定した大きさや位置に、指定した時間で、移動させることができるんだよ。
toggleメソッドやhideメソッドなんかも、ゆっくりと変化しますよね。
そうそう。あれも一種のアニメーションなんだ。では、animateメソッドを書いてみよう!
animateメソッドの書き方
ここではanimateメソッドの基本的な書き方を解説します。
基本のコード
基本のコードとしては、動かす要素名に対してparamsプロパティで指定したアニメーションを適用します。
[duration], [easing], [complete]は省略可能です。
$('動かす要素名').animate(params, [duration], [easing], [complete])
使用例
$(function() {
$('動かす要素名').animate({
'動かすアニメーション名': '動かす距離'
});
});
動かす要素名はclassやidで指定します。
動かすアニメーション名はopacity(透明度)や、marginLeft(右に動かす)などの指定が可能です。
動かす距離は、100pxのように指定可能です。
animateメソッドのプロパティ例
animateメソッドでアニメーションに利用できるプロパティは、以下の4つです。
- params
- duration
- easing
- complete
これら4つの役割と利用例を解説します。
params
paramsプロパティは必須です。
paramsプロパティでは、最終的に変化させるCSSのキーと値のマップ値を指定します。
animateメソッドのparamsプロパティに指定できるCSSのコードは、基本的に数値で表せるものです。
よく利用するものとして次の10個を例示します。
- width(幅)
- height(高さ)
- top(上)
- left(左)
- right(右)
- bottom(↓)
- margin(マージン)
- padding(パディング)
- fontSize(フォントサイズ)
- opacity(透明度)
実際にはCSSのmargin-leftを指定する場合、leftとmarginを組み合わせてmarginLeftのような指定を行います。
CSSのmargin-leftとは異なり、marginLeftという記法にする必要があります。
fontSizeもCSSの記法であればfont-sizeと記載するところを、fontSizeという記法で指定します。
これはキャメルケースという記法で、区切り文字部分を大文字で表す記法です。
animateメソッドを利用する上での文法上の決まりですので使ってみてください。
実際の指定は、pxやemや%を単位として指定します。
たとえば、”width”: “100px”と指定することで、id=”box”要素の幅が100pxに伸びるアニメーションになります。
$("#box").animate({
"width": "100px",
});
duration
durationプロパティは省略可能なオプションです。
一般的には数値を指定します。
1000を指定すると、1秒のアニメーションを意味します。
何も指定しないとnormalという指定になります。
normal以外にもslowやfastという指定値も可能です。
easing
easingプロパティは省略可能なオプションです。
easingプロパティでは、値の変化を調節する独自関数を指定できます。
easingプロパティでは、swingとlinearという指定値が用意されています。
swingが初期値です。
swingは、始めと終わりは緩やかで途中は速めのアニメーションです。
linearは 、一定スピードのアニメーションです。
complete
complete プロパティは省略可能なオプションです。
complete プロパティでは、アニメーション終了時に実行する処理を指定できます。
実際にアニメーションを作ってみよう
簡単にアニメーションを実装してみましょう。
id=”box”という要素をアニメーションによって動かしてみます。
今回のコードは幅40px、高さ40pxの箱を下に200px動かすコードです。
HTML
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>CSS overflow</title> <link rel="stylesheet" type="text/css" href="sample.css"> <script src="https://code.jquery.com/jquery-3.0.0.min.js"></script> <script type="text/javascript"> $(function() { $('#box').animate({ 'marginTop': '200px' }); }); </script> </head> <body> <div id="box"></div> </body> </html>
CSS
#box { width: 300px; height: 300px; background: black; }
jQueryの各行の記述について解説していきます。
$(function()
この行はjQueryのコードを実行するための決まり文句です。
この関数内に書かれたコードが実行されます。
$('#box').animate({
idがboxの要素に対して、animateメソッドを実行しています。
'marginTop': '200px'
boxのmargin topを200pxに変更します。
それによって下に動いているように見えます。
また、animateの第2引数に時間を渡すこともできます。
$(function() { $('#box').animate({ 'marginTop': '200px' },1000); });
単位はmsです。
結果的に、幅40px、高さ40pxの箱を下に200px動かします。
まとめ
jQueryのanimateメソッドについて解説しました。
animateメソッドでは、$(‘動かす要素名’).animate(params, [duration], [easing], [complete])のような指定をしました。
animateメソッドでは、paramsプロパティだけ指定すれば、簡単にアニメーションを適用できました。
他の動作もjQueryでは簡単に実行できるので、ぜひanimateメソッドを利用してみてください。
上から下に落ちているように見えますね。
animateメソッドで簡単に実現できるんだよ。
連続で動作したり、アニメーション終了後に関数を実行させるようなことはできますか?
.animate().animate()のようにメソッドチェーンの形にすると、連続で動作させることができるよ。animateメソッドの第2引数が時間指定、第3引数がアニメーションの種類指定、第4引数が動作完了後の関数指定になってるよ。
JavaScriptを学習中の方へ
これで解説は終了です、お疲れさまでした。
- つまずかず「効率的に」学びたい
- 副業や転職後の「現場で使える」知識やスキルを身につけたい
プログラミングを学習していて、このように思ったことはありませんか?
テックアカデミーのフロントエンドコースでは、第一線で活躍する「プロのエンジニア」が教えているので、効率的に実践的なスキルを完全オンラインでしっかり習得できます。
合格率10%の選考を通過した、選ばれたエンジニアの手厚いサポートを受けながら、JavaScript・jQueryを使ったWebサービス開発を学べます。
まずは一度、無料体験で学習の悩みや今後のキャリアについて話してみて、「現役エンジニアから教わること」を実感してみてください。
時間がない方、深く知ってから体験してみたい方は、今スグ見られる説明動画から先に視聴することをおすすめします!