react-transition-group vs framer-motion vs react-spring vs react-motion
アニメーションライブラリ
react-transition-groupframer-motionreact-springreact-motion類似パッケージ:
アニメーションライブラリ

アニメーションライブラリは、ウェブアプリケーションやウェブサイトに視覚的な動きを追加するためのツールです。これらのライブラリは、要素のトランジション、フェードイン・フェードアウト、スライド、バウンスなど、さまざまなアニメーション効果を簡単に実装できるようにします。アニメーションは、ユーザーインターフェースをより魅力的にし、ユーザーの注意を引く手段として重要です。これらのライブラリは、CSSアニメーションやJavaScriptアニメーションを利用して、スムーズでインタラクティブな動きを実現します。

npmのダウンロードトレンド
3 年
GitHub Starsランキング
統計詳細
パッケージ
ダウンロード数
Stars
サイズ
Issues
公開日時
ライセンス
react-transition-group21,959,02410,255244 kB244-BSD-3-Clause
framer-motion13,752,89130,5082.35 MB3193日前MIT
react-spring906,60328,9998.36 kB1343ヶ月前MIT
react-motion587,71121,751-1938年前MIT
機能比較: react-transition-group vs framer-motion vs react-spring vs react-motion

アニメーションの種類

  • react-transition-group:

    react-transition-groupは、要素のマウントやアンマウントに伴うトランジションを管理します。フェードイン・フェードアウト、スライドイン・スライドアウトなど、シンプルなトランジションを実装するのに適しています。

  • framer-motion:

    framer-motionは、トランジション、ドラッグ、ホバー、クリックなど、さまざまなインタラクションに対応したアニメーションを提供します。特に、複雑なトランジションやインタラクティブなアニメーションを簡単に実装できるのが特徴です。

  • react-spring:

    react-springは、スプリング物理を利用したアニメーションを提供し、柔軟でリアルな動きを実現します。トランジション、ドラッグ、ホバーなど、さまざまなアニメーションスタイルに対応しており、カスタマイズが容易です。

  • react-motion:

    react-motionは、主に物理ベースのトランジションに焦点を当てています。アニメーションの動きが自然で滑らかになるように設計されており、特に位置やサイズの変化に対してリアルな動きを提供します。

カスタマイズ性

  • react-transition-group:

    react-transition-groupは、トランジションのクラス名やスタイルをカスタマイズできるため、シンプルなトランジションをデザインに合わせて調整することができます。

  • framer-motion:

    framer-motionは、アニメーションのプロパティを細かく設定できるため、デザインに合わせたカスタマイズが容易です。特に、インタラクションに応じた動きを簡単に設定できるのが特徴です。

  • react-spring:

    react-springは、スプリングの設定(バネの強さやダンピングなど)を細かく調整できるため、非常に高いカスタマイズ性を持っています。デザインに合わせたリアルな動きを作りたい場合に最適です。

  • react-motion:

    react-motionは、物理法則に基づいたアニメーションを提供するため、動きのカスタマイズは限られていますが、自然な動きを重視するデザインには適しています。

学習曲線

  • react-transition-group:

    react-transition-groupは、トランジションの概念がシンプルで、比較的簡単に習得できます。特に、既存のCSSトランジションを利用する場合は、すぐに使い始めることができます。

  • framer-motion:

    framer-motionは、直感的なAPIと豊富なドキュメントが提供されているため、比較的短時間で習得できます。特に、デザインに特化した機能が多いため、デザイナーにも使いやすいです。

  • react-spring:

    react-springは、スプリング物理に基づいているため、最初は理解に時間がかかるかもしれませんが、柔軟性とカスタマイズ性が高いため、一度習得すれば多くの場面で活用できます。

  • react-motion:

    react-motionは、物理ベースのアニメーションを理解する必要があるため、少し学習が必要ですが、自然な動きを実現するための概念はシンプルです。

パフォーマンス

  • react-transition-group:

    react-transition-groupは、CSSトランジションやアニメーションを利用するため、ブラウザの最適化を活かすことができ、パフォーマンスは良好です。ただし、アニメーションの数が多くなると、注意が必要です。

  • react-spring:

    react-springは、スプリング物理を使用しているため、特に多くのアニメーションを同時に実行する場合は注意が必要ですが、最適化が行われているため、一般的な使用では問題ありません。

  • react-motion:

    react-motionは、物理ベースのアニメーションを使用しているため、計算コストがかかる場合がありますが、適切に使用すればパフォーマンスへの影響は最小限です。

コード例

  • react-transition-group:

    react-transition-groupを使用したアニメーションの例

    import { CSSTransition, TransitionGroup } from 'react-transition-group';
    
    function Example() {
      return (
        <TransitionGroup>
          <CSSTransition classNames="fade" timeout={500}>
            <div>フェードアニメーション</div>
          </CSSTransition>
        </TransitionGroup>
      );
    }
    
  • framer-motion:

    framer-motionを使用したアニメーションの例

    import { motion } from 'framer-motion';
    
    function Example() {
      return (
        <motion.div
          initial={{ opacity: 0 }}
          animate={{ opacity: 1 }}
          exit={{ opacity: 0 }}
          transition={{ duration: 0.5 }}
        >
          フェードイン・フェードアウト
        </motion.div>
      );
    }
    
  • react-spring:

    react-springを使用したアニメーションの例

    import { useSpring, animated } from 'react-spring';
    
    function Example() {
      const props = useSpring({ to: { opacity: 1 }, from: { opacity: 0 } });
      return <animated.div style={props}>スプリングアニメーション</animated.div>;
    }
    
  • react-motion:

    react-motionを使用したアニメーションの例

    import { Motion, spring } from 'react-motion';
    
    function Example() {
      return (
        <Motion defaultStyle={{ x: 0 }} style={{ x: spring(100) }}>
          {style => <div style={{ transform: 
    `translateX(${style.x}px)` }}>スプリングアニメーション</div>}
        </Motion>
      );
    }
    
選び方: react-transition-group vs framer-motion vs react-spring vs react-motion
  • react-transition-group:

    react-transition-groupは、トランジションとアニメーションを管理するためのコンポーネントを提供するライブラリで、特に要素の出入りに焦点を当てています。要素のマウントやアンマウント時にアニメーションを追加したい場合に適しています。

  • framer-motion:

    framer-motionは、特にReactアプリケーション向けに設計されたアニメーションライブラリで、インタラクティブでダイナミックなアニメーションを簡単に作成できます。複雑なアニメーションを直感的に作成できるため、デザインにこだわるプロジェクトに最適です。

  • react-spring:

    react-springは、スプリング物理に基づいたアニメーションを提供するライブラリで、柔軟性が高く、リアルな動きを簡単に作成できます。アニメーションのカスタマイズ性が高く、デザインに合わせた動きを作りたい場合におすすめです。

  • react-motion:

    react-motionは、物理ベースのアニメーションを提供するライブラリで、自然な動きを実現します。アニメーションの動きに物理法則を取り入れたい場合に適しています。

react-transition-group のREADME

react-transition-group npm

ATTENTION! To address many issues that have come up over the years, the API in v2 and above is not backwards compatible with the original React addon (v1-stable).

For a drop-in replacement for react-addons-transition-group and react-addons-css-transition-group, use the v1 release. Documentation and code for that release are available on the v1-stable branch.

We are no longer updating the v1 codebase, please upgrade to the latest version when possible

A set of components for managing component states (including mounting and unmounting) over time, specifically designed with animation in mind.

Documentation

TypeScript

TypeScript definitions are published via DefinitelyTyped and can be installed via the following command:

npm install @types/react-transition-group

Examples

Clone the repo first:

git@github.com:reactjs/react-transition-group.git

Then run npm install (or yarn), and finally npm run storybook to start a storybook instance that you can navigate to in your browser to see the examples.