Webページの多くは静的で、一度表示したらあまり表示が変わることはありません。Ajaxなどを使った場合でも、サーバで通信した結果を表示するくらいです。

よりインタラクティブで、動きのあるUIを実現するのに便利なライブラリがReact Bitsです。名前の通り、Reactのコンポーネントとして提供されており、簡単に導入できるクリエイティブデベロッパー向けのライブラリです。

React Bitsとは

React Bitsは、カスタマイズの容易なアニメーションを提供するReactコンポーネントのコレクションです。スクロール、ホバー、クリックなどのユーザーインタラクションに応じて、さまざまなアニメーション効果を簡単に実装できます。

JavaScriptとTypeScript、素のCSSでもTailwind CSSでも利用できます。コンポーネントは110以上存在し、さまざまなアニメーション効果を実現できます。

React Bitsのインストール

インストールはコードをコピーして行うこともできるのですが、CLIを使うのが手軽そうです。まず、ベースとして gsap をインストールします。 gsap は、アニメーションを実現するためのJavaScriptライブラリです。

npm install gsap

そして、React Bitsのコンポーネントをインストールするコマンドとして、shadcnとjsrepoの2つが用意されています。

# shadcn
npx shadcn@latest add https://reactbits.dev/r/SplitText-<LANGUAGE>-<STYLE>

# jsrepo
npx jsrepo add https://reactbits.dev/<VARIANT>/TextAnimations/SplitText

パラメータは以下のようになっています。

  • LANGUAGE:
    JSまたはTS
  • STYLE:
    CSSまたはTW
  • VARIANT:
    • default
      JavaScript + CSS
    • tailwind
      JavaScript + Tailwind CSS
    • ts/default
      TypeScript + CSS
    • ts/tailwind
      TypeScript + Tailwind CSS

SplitTextは、以下のようなアニメーションです。

このように、アニメーションの種類を指定してインストールする形になります。

React Bitsのデモ

SplitTextは、以下のように利用します。 SplitTextのファイル自体は200行近いコードとなっています。

import SplitText from "./SplitText";

const handleAnimationComplete = () => {
  console.log("All letters have animated!");
};

<SplitText
  text="Hello, GSAP!"
  className="text-2xl font-semibold text-center"
  delay={100}
  duration={0.6}
  ease="power3.out"
  splitType="chars"
  from={{ opacity: 0, y: 40 }}
  to={{ opacity: 1, y: 0 }}
  threshold={0.1}
  rootMargin="-100px"
  textAlign="center"
  onLetterAnimationComplete={handleAnimationComplete}
/>

Blur Text

テキストがぼやけて表示され、徐々にクリアになっていきます。

Circular Text

文字が回転しています。マウスオーバーで回転が速くなります。

Glitch Text

テキストにグリッチエフェクトがかかります。

Ascii Text

指定した文字で、テキストを表現します。テキストはアニメーションしています。

Gradual Blur

スクロールするのに伴って、コンテンツがはっきりと見えるようになります。

Sticker Peel

画像がステッカーのように剥がれていきます。

Metallic Paint

画像(SVG)に金属のような質感が加わります。

Card Nav

メニューアイコンをクリックすると、アニメーションしながらカード型コンテンツが表示されます。

Fluid Glass

レンズのような効果で、コンテンツが歪んで見えます。

Counter

数字がアニメーションするカウンターです。

背景

ランディングページによくある、背景がアニメーションするような効果も実現できます。たくさんの例がありますが、以下はその一例です。

まとめ

React Bitsは、gsapをベースにしたコンポーネント集と言えます。gsapを直接使うのは難しいですが、React Bitsであれば、簡単にアニメーションを組み込めます。多数のオプションがあるので、要件にあったアニメーションを実現できるでしょう。

React限定にはなりますが、Webサイトにクリエイティブな表現を加えたい場合に、導入を検討してください。

React Bits - Animated UI Components For React