第3回
React Bitsでアニメ付きUIを最短実装する
アニメ付きUIコンポーネント集 React Bits を実際に試す。jsrepoでの導入からBlurTextの設置までを、このサイトと同じVite+Tailwind環境で動かしながら解説する。
「React最新ラボ」最終回。最後は見た目の話。話題のUIコンポーネント集 React Bits を、このサイトと同じ Vite + TypeScript + Tailwind 構成に入れて動かす。
React Bits の考え方:インストールではなく「取り込む」
React Bits は jsrepo というCLIで、選んだコンポーネントのソースを自分の src/ にコピーする。提供形態は4つの組み合わせがあり、プロジェクトに合わせて選ぶ。
| 組み合わせ | 内容 |
|---|---|
| JS-CSS | JavaScript+素のCSS |
| JS-Tailwind | JavaScript+Tailwind |
| TS-CSS | TypeScript+素のCSS |
| TS-Tailwind | TypeScript+Tailwind(このサイトはこれ) |
導入する
このサイトと同じ TypeScript + Tailwind 構成に追加してみる。各コンポーネントの公式ページに、その構成用の npx jsrepo add ... コマンドが表示されるので、それをコピーするのが基本だ。
たとえば文字アニメの BlurText を TS-Tailwind で入れるなら、こうなる。
npx jsrepo@latest add https://reactbits.dev/r/BlurText-TS-TWURL末尾の BlurText-TS-TW が「コンポーネント名-言語-スタイル」を表す。初回はプロジェクト用の設定ファイルを作るか聞かれるので、プロジェクト直下で実行する。実行すると src/ 配下にコンポーネントのソースが入る。
文字をふわっと出す:BlurText
取り込んだ BlurText を使ってみる。ぼやけた状態から、語ごと・文字ごとにくっきり浮かび上がるテキストアニメだ。
// 取り込んだパスに合わせて import する
import BlurText from './components/BlurText/BlurText'
export function Hero() {
return (
<BlurText
text="現場で役立つReact実践入門"
animateBy="words"
direction="top"
delay={150}
stepDuration={0.35}
className="text-3xl font-bold"
/>
)
}主なprops。
| prop | 意味 | 既定 |
|---|---|---|
text |
表示する文字列 | '' |
animateBy |
'words'(語ごと)/ 'letters'(文字ごと) |
'words' |
direction |
'top' / 'bottom'(ぼかしが消える向き) |
'top' |
delay |
1要素ずつずらす遅延(ms) | 200 |
stepDuration |
1ステップのアニメ長(秒) | 0.35 |
現場で役立つReact実践入門
現場で役立つReact実践入門
スクロールで滑り込ませる:AnimatedContent
AnimatedContent は、要素が画面に入ってきたタイミングで下からスッと現れるラッパー。中身を包むだけで使える。
import AnimatedContent from './components/AnimatedContent/AnimatedContent'
export function Section() {
return (
<AnimatedContent distance={100} direction="vertical" duration={0.8} delay={0.1}>
<h2>スクロールで現れる見出し</h2>
</AnimatedContent>
)
}distance(移動量px)・direction('vertical' / 'horizontal')・duration(秒)・delay(秒)あたりを調整する。これに加えて、背景系の Aurora や DotGrid、数字を回す CountUp など、装飾用のコンポーネントが一通り揃っている。
取り込み方式の利点と注意
- 利点:取り込んだ後は自分のコード。改変自由・依存の上書きに巻き込まれにくい
- 注意:本家の更新は自動で来ない(手動で取り直し)。
motion/gsapなど依存が増える。必要な分だけ入れる - パフォーマンス:背景の常時アニメ(
Auroraなど)は描画コストが高め。多用しない
どこまで使う? Base UI との使い分け
最後に「どんなUIライブラリを選ぶか」の地図を一つ。React Bits と、よく比較される Base UI(MUIチームのheadlessライブラリ)は、役割が違う。
| React Bits | Base UI | |
|---|---|---|
| 担当 | 見た目・動き(装飾) | 振る舞い・アクセシビリティ(土台) |
| 例 | BlurText / Aurora / CountUp | Menu / Dialog / Tooltip |
| 見た目 | 付いてくる | 自前で当てる(headless) |
| 向く場面 | 動きで魅せたいLP・ヒーロー | 堅牢で操作可能なUI部品 |
まとめ
- React Bits は
jsrepoでソースを取り込むアニメUI集。TS-Tailwind 構成にそのまま入る BlurText/AnimatedContentなどをコピーして、自分のコードとして調整できる- 取り込み方式ゆえ更新は手動。依存とパフォーマンスに注意して、必要な分だけ使う
- 飾りは React Bits、操作とa11yの土台は Base UI、と役割で使い分ける
これで「React最新ラボ」3回が完結。View Transitions(実験的)・Waku(alpha)・React Bits と触ってきたが、最新技術は「まだ実験段階/alpha」も多い。それでも実際に手を動かすと、「何が便利で、何が時期尚早か」が自分の感覚で分かる。一次情報(公式ドキュメント)で確かめながら試す――それが新技術と付き合う一番の近道だ。