生成AI活用

AIで数字がカウントアップするアニメーションを作る【JS生成】

更新日:2026-05-10 著者:unigram 読了目安:3分

この記事の要点

AIで数字がカウントアップするアニメーションのJSを生成する方法。requestAnimationFrameとIntersection Observerを使った実装のプロンプト例・コードを紹介します。

「導入実績 1,200社」「満足度 98%」などの数字が0からカウントアップしていく演出。実績をアピールするセクションに使えるUIです。

方法①:既存のHTMLからJSを生成する

AIへのプロンプト例

以下のHTMLの各数字要素を、ページを表示したときに0から指定の数値まで
カウントアップするアニメーションにしてください。
Intersection Observerを使ってスクロールで見えたときに始まるようにしてください。

<div class="stats">
  <div class="stat">
    <span class="count" data-target="1200">0</span>社
  </div>
  <div class="stat">
    <span class="count" data-target="98">0</span>%
  </div>
  <div class="stat">
    <span class="count" data-target="15">0</span>年
  </div>
</div>

生成されたJS例

function countUp(el) {
  const target = parseInt(el.dataset.target, 10);
  const duration = 1500; // ミリ秒
  const start = performance.now();

  function update(now) {
    const elapsed = now - start;
    const progress = Math.min(elapsed / duration, 1);
    // easeOutQuad(最初速く、最後ゆっくり)
    const eased = 1 - (1 - progress) * (1 - progress);
    el.textContent = Math.floor(eased * target).toLocaleString();
    if (progress < 1) requestAnimationFrame(update);
  }
  requestAnimationFrame(update);
}

const observer = new IntersectionObserver(entries => {
  entries.forEach(entry => {
    if (entry.isIntersecting) {
      countUp(entry.target);
      observer.unobserve(entry.target);
    }
  });
}, { threshold: 0.5 });

document.querySelectorAll('.count').forEach(el => observer.observe(el));

📝 用語メモ

requestAnimationFrame:ブラウザの描画タイミングに合わせてアニメーションを実行するJSの関数。setIntervalより滑らかで、タブを非表示にすると自動で停止するため効率的です。
toLocaleString():数値を「1,200」のようにカンマ区切りで表示します。

方法②:HTMLとセットで生成する

AIへのプロンプト例

スクロールで見えたときに数字がカウントアップするセクションを
HTML・CSS・JavaScriptでまとめて作ってください。
・数字は3つ(社数・満足度・年数)を横並びに配置
・数字は大きく、ラベルは小さいフォントで
・カウントは0からスタートし、1.5秒かけてゆっくり加速して終わる

ポイント

  • data-target属性に目標値を設定するだけで、JSが自動で読み取ります
  • カンマ区切りにしたい場合は「数値は3桁ごとにカンマ区切りで表示して」と伝えましょう

この記事を書いた人

unigram
web、印刷、映像などの制作をしています。@京都、フリーランス18年目。 大学で講師もしています。 自身の備忘録も兼ねて、Web制作・WordPress・SEO・GA4・生成AI活用をテーマに情報発信しています。わかりやすく優しい内容で記事作成を心がけています。