本文へスキップ
  1. Web BENTO JS
  2. カテゴリ一覧
  3. テキスト演出
Aa
13 / TEXT FX 12 パーツ

JSテキストエフェクト 12選

コピペで動くテキストエフェクト(文字演出)のサンプル集。プレビューは実際にホバーやクリックで再生できます。HTML / CSS / JS タブでコードを確認し、全部コピーを押せば1回の貼り付けで完成。すべて依存ライブラリなしのバニラJSで、data-bnto-* 属性による自動初期化式です。文字の分割はJSが自動で行うので、HTMLには素のテキストを書くだけで大丈夫です。

該当するパーツが見つかりませんでした。

HELLO JAVASCRIPT

スクランブル解読

<!-- 素のテキストを書くだけ。表示時に再生、クリックで何度でも再生 -->
<p class="bnto-scrm" data-bnto-scramble>HELLO JAVASCRIPT</p>
使い方のコツ

元のテキストは初期化時にJSが記憶するので、HTMLには素のテキストを書くだけで動きます。確定スピードは frame / 3 の3を、コマ送りの速さは 40(ms)を変更してください。ランダム文字が英数字なので、英字の見出しと特に相性がよいです。プレビューをクリック(または↺ボタン)で再生し直せます。

ふわっと1文字ずつ現れます

1文字ずつ出現

<!-- span分割はJSが自動で行うので、素のテキストでOK。クリックで再生し直せます -->
<p class="bnto-charin" data-bnto-charin>ふわっと1文字ずつ現れます</p>
使い方のコツ

学習ポイントは「span分割をJSに任せる」ことです。手作業でspanを書くとHTMLが読みにくく文言修正も大変ですが、この方式なら素のテキストを書き換えるだけで済みます。時間差は 0.045(秒/文字)で調整できます。長文に使うと再生が長くなるので、見出し程度の長さがおすすめです。プレビューをクリック(または↺ボタン)で再生し直せます。

WAVE TEXT

波打ちテキスト

<!-- 各文字への delay 付与はJSが自動で行います -->
<p class="bnto-wave" data-bnto-wave>WAVE TEXT</p>
使い方のコツ

アニメーション自体はCSSで、JSは「分割とdelay付与」だけを担当する分業スタイルです。0.09(秒/文字)を大きくすると波がゆったり広がります。常時動き続けるので、ロゴやキャッチコピーなど1か所に絞って使うのがおすすめです。

HOVER OVER ME

ホバーで文字シャッフル

<!-- ランダム英字に置き換わるので英字テキスト向き -->
<p class="bnto-hovmix" data-bnto-hovmix>HOVER OVER ME</p>
使い方のコツ

置き換え文字が英大文字なので、英字の見出しやナビゲーションで使うと自然に見えます(日本語だと見た目の差が大きく読みにくくなります)。タッチデバイスではホバーが発生しないため、装飾として割り切って使ってください。置き換えの速さは 60(ms)で調整できます。

とにかく速いツールです

単語ローテーター

<!-- data-words にカンマ区切りで入れ替える単語を指定 -->
<p class="bnto-rotline">とにかく<span class="bnto-rot" data-bnto-rot data-words="速い,軽い,簡単">速い</span>ツールです</p>
使い方のコツ

ヒーローのキャッチコピー(「◯◯なサービスです」の◯◯部分)に使うのが定番の場面です。単語は data-words に何個でも追加できます。切り替え間隔は 2200(ms)で調整してください。単語の長さが大きく違う場合は min-width を最長の単語に合わせるとガタつきません。

GLITCH TEXT

グリッチ

<!-- 周期的に+ホバーで一瞬ノイズが走ります -->
<p class="bnto-glitch" data-bnto-glitch>GLITCH TEXT</p>
使い方のコツ

発火間隔は 2600(ms)、ノイズの濃さは 0.14(確率)、1回の長さは count >= 6 で調整できます。ダーク系の背景と等幅フォントに載せるとデジタル感が際立ちます。周期発火が不要なら setInterval(burst, 2600) の行を削除して、ホバー専用にもできます。

左から順に色づいていきます

読み上げハイライト

<!-- 見えたタイミングで左から色がスイープ。クリックで再生し直せます -->
<p class="bnto-sweep" data-bnto-sweep>左から順に色づいていきます</p>
使い方のコツ

カラオケの歌詞のように「読ませたい順」を視線誘導できるのが特長です。スイープの速さは 0.06(秒/文字)で調整できます。スイープ前の色 #C9D6E2 を背景に近づけると「浮かび上がる」印象に、濃くすると「色が変わる」印象になります。プレビューをクリック(または↺ボタン)で再生し直せます。

BOUNCE NEAR ME

近接バウンス

<!-- カーソルを文字に近づけると、近い文字だけ持ち上がります -->
<p class="bnto-nearpop" data-bnto-nearpop>BOUNCE NEAR ME</p>
使い方のコツ

反応する範囲は RANGE(px)、持ち上がる高さは * 12 の部分で調整できます。マウス操作が前提なので、タッチデバイスでは静的なテキストとして表示されるだけです(壊れません)。フッターのロゴやコピーライトに仕込むと遊び心が出ます。

無限マーキー

<!-- 中身は1セットだけ書けばOK。必要な数だけJSが自動で複製します -->
<div class="bnto-marq" data-bnto-marquee data-speed="40" aria-hidden="true">
  <div class="bnto-marq-in"><span>MARQUEE TEXT ◆ VANILLA JS ◆ COPY &amp; PASTE ◆</span></div>
</div>
使い方のコツ

サイト上部の帯やお知らせティッカーの定番演出です。速さは data-speed(px/秒)で調整でき、数値を大きくするほど速く流れます。複製する数はJSが幅から自動計算するので、テキストの長さを変えても修正は不要です。ホバーすると一時停止するため、読みたい人はマウスを載せるだけで読めます。装飾目的なら aria-hidden="true" を付けて、スクリーンリーダーが複製分まで読み上げないようにしておくと安心です。

散らばって、集まる

バラけて集合

<!-- 素のテキストを書くだけ。散らばった文字が定位置へ集合。クリックで再生し直せます -->
<p class="bnto-asmb" data-bnto-assembletext>散らばって、集まる</p>
使い方のコツ

散らばる範囲は * 160* 90(px)、回転の強さは * 180(deg)で調整できます。集合の時間差は 0.035(秒/文字)、集まる速さはCSSの .6s です。散らばりの座標は再生のたびにランダムなので、何度クリックしても違う動きになります。プレビューをクリック(または↺ボタン)で再生し直せます。

マウスで照らしてください

スポットライトテキスト

<!-- マウスを載せると周囲だけ明るく見えます(タッチ環境では常時表示) -->
<p class="bnto-spot" data-bnto-spottext>マウスで照らしてください</p>
使い方のコツ

ライトの半径はCSSの circle 70px、照らされていない部分の見え方は rgba(0,0,0,.12)(0に近いほど暗く)で調整できます。ホバーできないタッチデバイスでは自動的に常時表示になるため、読めなくなる心配はありません。ダーク背景のヒーローやフッターの遊び要素として使うと映えます。

NEON SIGN

ネオンのランダム明滅

<!-- ランダムなタイミングで一部の文字がちらつきます -->
<p class="bnto-neon" data-bnto-neonflicker>NEON SIGN</p>
使い方のコツ

ちらつきの速さは 70(ms)、1回のちらつき回数は count >= 4、発生間隔は 500 + Math.random() * 1800(ms)で調整できます。グローの強さはCSSの text-shadow のぼかし量(6px / 18px)です。ダーク背景に載せると看板らしさが際立ちます。OSの「視差効果を減らす」設定では明滅せず、点灯したままになります。

JSテキストエフェクトの基礎知識

テキストエフェクトは、見出しやキャッチコピーに動きを付けて視線を集めるための演出です。CSSだけでも簡単なアニメーションは作れますが、「文字を1つずつ分割して順番に動かす」「ランダムな文字に置き換える」「マウスの位置に反応させる」といった処理はJavaScriptの得意分野です。このページのサンプルはすべて依存ライブラリなしのバニラJavaScriptで、jQueryもフレームワークも不要です。

使い方は、HTML / CSS / JSの3タブをそれぞれ貼り付けるか、「全部コピー」ボタンでひとまとめになったコードを1回貼り付けるだけです。初期化は data-bnto-* 属性の自動検出式なので、同じページに何個置いても、うっかりコードを2回貼っても壊れません。

文字分割はJavaScriptに任せる

1文字ずつ動かすには各文字を <span> で囲む必要がありますが、手作業で書くとHTMLが読みにくくなり、文言の修正も大変です。このページのサンプルの多くは、初期化時にJSがテキストを自動で分割する設計にしています(1文字ずつ動かすタイプが対象で、テキスト全体を扱う演出は分割しません)。HTMLには素のテキストを書くだけでよく、あとから文言を変えてもコードの修正は不要です。

使いどころはヒーローや見出しに絞る

動くテキストは強力ですが、多用するとページ全体が落ち着かなくなり、本文の可読性も下がります。ファーストビューのキャッチコピーやセクション見出しなど、「ここぞ」という場所に1〜2か所だけ使うのがおすすめです。本文の段落には使わないほうが読みやすさを保てます。

アクセシビリティ(prefers-reduced-motion)への配慮

画面の動きで体調を崩す人のために、OSには「視差効果を減らす」設定があります。このページのサンプルはすべて prefers-reduced-motion を確認し、有効な場合はアニメーションを省略して最終状態のテキストを即座に表示します。自分で演出を追加するときも、この1行のチェックを入れておくと安心です。

「全部コピー」と「分けて貼る」の使い分け

「全部コピー」を使うと、HTML・CSS・JavaScriptがひとつの自己完結ブロックとしてコピーされるので、1回の貼り付けだけですぐ動きを確認できます。動作のお試しや、1ページ完結のLPに組み込むときはこの方法が手軽です。

一方、本番サイトへ本格的に組み込む場合は、CSSはスタイルシート(.cssファイル)へ、JavaScriptは</body>直前や共通の.jsファイルへ、HTMLは使いたい場所へと分けて貼るのが一般的です。スタイルとスクリプトを1か所に集約できるため、複数ページ・複数パーツで使い回すときの管理がしやすく、ブラウザのキャッシュも効きやすくなります。なお、同じパーツをページ内で何度も使う場合でも、CSSとJSを貼るのは1回だけで大丈夫です(初期化スクリプトが該当要素すべてに自動で効きます)。

よくある質問

コピーしたテキストエフェクトはそのまま動きますか?
はい。「全部コピー」を押すとHTML・CSS・JSがひとつの自己完結ブロックになってコピーされ、ページに貼り付けるだけで動きます。ライブラリの読み込みは一切不要です。
HTML側で文字を1つずつspanで囲む必要はありますか?
いいえ、必要ありません。初期化スクリプトが読み込み時にテキストを自動で1文字ずつ分割するため、HTMLには素のテキストを書くだけで大丈夫です。あとから文言を変えてもコードの修正は不要です。
日本語のテキストでも使えますか?
はい。文字分割はJavaScriptが自動で行うため、日本語・英語のどちらでも動きます。ただしホバーで文字シャッフルのようにランダムな英字へ置き換えるタイプは、英字の見出しで使うほうが自然に見えます。
動きが苦手なユーザーへの配慮はありますか?
はい。すべてのサンプルはOSの「視差効果を減らす」設定(prefers-reduced-motion)を確認し、有効な場合はアニメーションを省略して最終状態のテキストを即座に表示します。
このページのパーツはAIコーディングツールでも使えますか?
はい。Claude CodeやCursorのようにWebページを読めるAIには、このページのURLとパーツ名(例:「1文字ずつ出現」)を伝えるだけで実装を指示できます。AIがWebを読めない場合は、「全部コピー」で取得した自己完結ブロックをチャットに貼り付けて調整を頼むのが確実です。改変後のコードは、公開前に動作確認することをおすすめします。

関連カテゴリ

テキスト演出と組み合わせて使いやすいパーツはこちら。