Framer MotionのuseInViewフックを使った要素の可視性の検出とアニメーション


  1. Framer MotionとuseInViewのインストール: まず、Framer MotionとuseInViewをインストールする必要があります。以下のコマンドを使用してインストールできます。
npm install framer-motion
npm install react-intersection-observer
  1. useInViewフックの使用: useInViewフックを使用するには、以下のようにコンポーネント内でインポートします。
import { useInView } from 'react-intersection-observer';
  1. useInViewフックの基本的な使い方: useInViewフックを使用して要素の可視性を検出するには、以下のようにコードを記述します。
const ExampleComponent = () => {
  const [ref, inView] = useInView();
  return (
    <div ref={ref}>
      {inView ? '要素が可視範囲に入っています' : '要素が可視範囲外です'}
    </div>
  );
};

上記の例では、refを要素に適用し、inViewを可視性の状態を示すブール値として受け取っています。要素が可視範囲に入るとinViewはtrueになり、要素が可視範囲外になるとfalseになります。

  1. アニメーションとの組み合わせ: useInViewフックは、要素の可視性に基づいてアニメーションを制御するのに便利です。以下は、useInViewフックとFramer Motionのアニメーションを組み合わせた例です。
import { motion } from 'framer-motion';
const AnimatedComponent = () => {
  const [ref, inView] = useInView();
  const animationVariants = {
    hidden: { opacity: 0 },
    visible: { opacity: 1 },
  };
  return (
    <motion.div
      ref={ref}
      initial="hidden"
      animate={inView ? 'visible' : 'hidden'}
      variants={animationVariants}
    >
      アニメーションされる要素
    </motion.div>
  );
};

上記の例では、要素が可視範囲に入るとopacityが1になり、要素が可視範囲外になるとopacityが0になるアニメーションが定義されています。

これらのコード例を参考にして、Framer MotionのuseInViewフックを使用して要素の可視性を検出し、アニメーションを制御する方法を実装してみてください。