1. Webアニメーションの基本 基礎知識
Webページでのアニメーションとは、HTML要素の視覚的プロパティを時間をかけて変化させることです。JavaScriptを使うことで、より複雑で柔軟なアニメーションを実現できます。
CSSアニメーションとの違い
CSSアニメーションはシンプルな動きに適していますが、JavaScriptアニメーションはインタラクションや条件分岐を含む複雑な動作が可能です。
主な変更可能プロパティ
位置(top, left)、サイズ(width, height)、見た目(opacity, color)、変形(transform)など
2. アニメーション実現の方法 3つの主要手法
① setInterval/setTimeout
従来の方法。指定した時間間隔でスタイルを更新していきます。
② requestAnimationFrame
現在推奨される方法。ブラウザの描画タイミングに合わせて滑らかなアニメーションを実現。
③ Web Animations API
最新の手法。ブラウザネイティブのアニメーション機能を活用し、高性能なアニメーションが可能。
3. 実践例:要素を移動させる
実際のコードを見ながら、要素を水平に移動させるアニメーションを作成してみましょう。
HTML構造
JavaScript(requestAnimationFrame版)
4. イージングで自然な動きを作る
一定速度の動きよりも、加速・減速を含む動きの方が自然で美しく見えます。これをイージングと呼びます。
ease-out(減速)
開始時は速く、終了に向けて徐々に減速する動き。最も自然に感じられるパターンです。
ease-in(加速)
ゆっくり開始して徐々に加速する動き。重厚感のある表現に適しています。
ease-in-out(加速後減速)
開始時は加速、中間で最高速、終了に向けて減速。バランスの取れた動きです。
イージングを適用した移動アニメーション
5. 実用的なアニメーションパターン
フェードイン・アウト
要素の透明度(opacity)を変更して表示・非表示を演出
スケールアニメーション
要素を拡大・縮小させる効果。ボタンのホバー効果などでよく使用
回転アニメーション
要素を回転させる効果。ローディングスピナーなどに活用
スライドイン
要素を画面外から滑らせて表示する効果
6. パフォーマンスとベストプラクティス
transformプロパティを活用
top、leftより transform を使用することで、ブラウザのGPU加速を活用でき、より滑らかなアニメーションが実現できます。
transform: translateX(100px)
非推奨:
left: 100px
will-changeプロパティ
アニメーションする要素にwill-changeを指定して、ブラウザに最適化のヒントを提供。
アニメーション終了後のクリーンアップ
不要になったアニメーションは必ずキャンセルしてメモリリークを防ぐ。
7. 実用例:ローディングスピナー
学んだ技術を組み合わせて、実際のWebサイトでよく見かけるローディングスピナーを作ってみましょう。
HTML + CSS
JavaScriptアニメーション
8. まとめ
JavaScriptアニメーションはrequestAnimationFrameまたはWeb Animations APIを使用することが現代的なアプローチです。
イージングを適用することで、より自然で美しい動きを実現できます。
transformプロパティを活用することで、パフォーマンスの良いアニメーションが作成できます。
アニメーション終了後は適切なクリーンアップを行い、メモリリークを防ぐことが重要です。