Next.jsでタイピングアニメーションを実装する方法

#JavaScript

はじめに

タイピングアニメーションは、テキストを一文字ずつ表示していく演出で、ヒーローエリアやキャッチコピーを目立たせたいときに便利です。

ここでは Next.js での実装方法を紹介します。

react-typed

今回紹介するのは react-typed を使う方法です。
Typed.js を React 向けにラップしたコンポーネントで、数行で導入できます。

インストール

npm install react-typed

実装例

"use client";
import { ReactTyped } from "react-typed";

export default function HeroTyping() {
  return (
    <h1>
      <ReactTyped
        strings={[
          "Next.jsでタイピングアニメーションを実装",
          "react-typedを使えば簡単に導入可能",
          "オプションも豊富でカスタマイズ自在"
        ]}
        typeSpeed={40}
        backSpeed={20}
        backDelay={1000}
        loop
        showCursor
        cursorChar="|"
      />
    </h1>
  );
}

※スタイルを除いた最小構成なので、適宜スタイリングをして使用してください。

主なオプション

オプション名デフォルト値説明
stringsstring[][]表示する文字列の配列
typeSpeednumber501文字を入力する速さ(ms)
startDelaynumber0タイピング開始までの待機時間(ms)
backSpeednumber50バックスペースの速さ(ms)
backDelaynumber700バックスペースを始めるまでの待機時間(ms)
smartBackspacebooleantrue前の文字列と次の文字列が共通の場合、共通部分を残す
shufflebooleanfalse文字列配列をランダム順に表示
loopbooleanfalse繰り返し再生するか
loopCountnumberInfinity繰り返す回数
attrstringnull要素の属性値にテキストを入力する場合に指定
bindInputFocusEventsbooleanfalse入力フィールドにフォーカス時に制御イベントをバインド
contentType"html" | "null""html"HTMLを解釈して表示するか、プレーンテキストとして扱うか
fadeOutbooleanfalseバックスペースの代わりにフェードアウトさせる
fadeOutClassstring"typed-fade-out"フェードアウトに使うCSSクラス名
fadeOutDelaynumber500フェードアウト開始までの遅延(ms)

まとめ

  • タイピングアニメーションは簡単に導入できる演出
  • react-typed を使えば数行のコードで実装可能
  • オプションを組み合わせて自由にカスタマイズできる

タイピングアニメーションを効果的に活用すれば、サイトの第一印象を強くし、メッセージをより印象的に伝えることができますので、ぜひ実装してみてください。

りょうま

りょうま

Frontend Developer

北海道・十勝を拠点にフリーランスのフロントエンドエンジニアとして活動。
React、TypeScript、Shopifyを使ったモダンなWebアプリケーション開発を得意としています。
ユーザー体験を重視したインターフェース設計・実装を行っています。