項目 | 内容 |
---|---|
用途 | アニメーション |
API設計 | 宣言的 |
SSR対応 | あり |
ライセンス | MIT |
エコシステム規模 | 豊富 |
モバイル対応 | あり |
外部依存関係 | あり |
TypeScript対応 | あり |
対応フレームワーク | React, Vue |
カスタマイズ性 | 高い |
項目 | 内容 |
---|---|
名称 | Framer Motion |
最新バージョン | 12.11.0 |
種類 | React専用アニメーションライブラリ |
開発元 | 元々Framerが開発、現在は独立 |
公式サイト | https://motion.dev/ |
NPMダウンロード数 | 120万回以上/週 |
GitHub Stars | 15,000以上 |
Framer Motionは、ReactアプリケーションにおけるUI要素のアニメーションを簡単かつパワフルに実装できるライブラリです。宣言的なAPIを通じて、複雑なアニメーションでも少ないコード量で実現できます。
Framer Motionは唯一のハイブリッドエンジンを採用しているため、ネイティブブラウザアニメーションのハードウェアアクセラレーションによる高速なパフォーマンスと、JavaScriptアニメーションの柔軟性の両方を兼ね備えています。これにより、スムーズで環境に優しい120fpsのアニメーションが可能になっています。
モーションコンポーネント(<motion.div>
など)を使用することで、通常のHTML/SVG要素をアニメーション機能で強化できます。animate
、whileHover
、whileTap
などのプロパティを使って様々な状態に応じたアニメーションを定義でき、コードの可読性を高めます。
単純なトランジションだけでなく、以下のような高度な機能も提供します:
Framer Motionの活用場面を紹介します。
ボタン、メニュー、カードなどのUI要素にホバーやクリック時のアニメーション効果を追加することで、ユーザー体験を向上させることができます。わずか数行のコードで、プロフェッショナルな印象を与えるインタラクションを実装できます。
ページ間の切り替えをスムーズにアニメーション化することで、ユーザーの操作の文脈を保ちながら、より自然な体験を提供できます。AnimatePresence
コンポーネントを使用することで、要素がDOMから削除される際のアニメーションも制御できます。
Webサイトのスクロール位置に連動したアニメーションを実装できます。whileInView
プロパティを使用して要素が表示領域に入った時のアニメーションや、useScroll
フックでスクロール位置に基づいた値の変化を作成できます。
Framer Motionの技術面での強みを理解しましょう。
Reactのコンポーネントモデルに完全に適合するよう設計されており、Reactの状態やライフサイクルと連携してアニメーションを制御できます。また、React Server Components(RSC)にも対応しています。
TypeScriptで書かれており、完全な型定義が提供されているため、IDEの補完機能が効き、型エラーを事前に検出できます。
LazyMotion
コンポーネントを使用することで、必要な機能だけを読み込むことができ、アプリケーションのバンドルサイズを削減できます。また、最小限の機能だけを含む「mini」バージョンも提供されています。
2025年初頭に、Framer MotionはFramerから独立し、「Motion」という名前に変更されました。現在は独立したプロジェクトとして、React以外にもVanilla JavaScriptやVueなどへの対応を強化しています。ただし、互換性は維持されており、既存のFramer Motionコードは引き続き動作します。