1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【React】Reactでスクロール時に下からふわっとフェードインするアニメーションを実装する

Posted at

この記事について

Webアプリ開発に慣れ親しんだ方であれば,ポートフォリオなどの静的なWebページを作成する際にもReactを使うことがあるかと思います.そのような静的なWebページによくある,スクロール時に下からふわっとフェードインするやつをReactで実装します.

完成イメージ

小要素にフェードインアニメーションを付与するReactコンポーネントを作成します.

完成イメージ
// <Example /> がフェードインするようになる
<FadeInUpWrapper>
  <Example />
</FadeInUpWrapper>

この記事に書いた通りの方法で,自分のポートフォリオにもフェードインアニメーションを実装しています.

実装手順

ライブラリのインストール

# npm
$ npm install animate.css react-intersection-observer
# yarn
$ yarn add animate.css react-intersection-observer
# pnpm
$ pnpm add animate.css react-intersection-observer

コンポーネントの作成

FadeInUpWrapper.tsx
'use client';

import 'animate.css';
import {useInView} from 'react-intersection-observer';

type Props = {
  children: React.ReactNode;
  className?: string;
};

export const FadeInUpWrapper = ({children, className}: Props) => {
  const {ref, inView} = useInView({
    rootMargin: '-50px', // 要素が表示されて50pxすぎたら
    triggerOnce: true,
  });

  return (
    <div ref={ref} className={className}>
      {inView && (
        <div className="animate__animated animate__fadeInUp">{children}</div>
      )}
    </div>
  );
};

上記をimportしてもらえれば,任意の要素にフェードインアニメーションを付与することができます.

おわりに

animate.cssでは他にも様々なアニメーションが提供されているので,classNameを変更するだけであらゆるアニメーションを実装することができます.間違い・改善点等があれば指摘していただけますと幸いです.

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?