- Framer MotionとuseInViewのインストール: まず、Framer MotionとuseInViewをインストールする必要があります。以下のコマンドを使用してインストールできます。
npm install framer-motion
npm install react-intersection-observer
- useInViewフックの使用: useInViewフックを使用するには、以下のようにコンポーネント内でインポートします。
import { useInView } from 'react-intersection-observer';
- useInViewフックの基本的な使い方: useInViewフックを使用して要素の可視性を検出するには、以下のようにコードを記述します。
const ExampleComponent = () => {
const [ref, inView] = useInView();
return (
<div ref={ref}>
{inView ? '要素が可視範囲に入っています' : '要素が可視範囲外です'}
</div>
);
};
上記の例では、refを要素に適用し、inViewを可視性の状態を示すブール値として受け取っています。要素が可視範囲に入るとinViewはtrueになり、要素が可視範囲外になるとfalseになります。
- アニメーションとの組み合わせ: 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フックを使用して要素の可視性を検出し、アニメーションを制御する方法を実装してみてください。