本文へスキップ

AIタイピングインジケータ

AIが考え中の「・・・」3点バブルから、回答が1文字ずつ流れ込むストリーミング風表示。チャットUI・AIアシスタントの定番フィードバック。

プレビュー

クリック

操作クリック/タップで動きます。

仕様書

向く場面
  • AI チャットの「考え中」と回答の流し込み
  • ストリーミング応答の見た目
  • 返答が来ることを待たせる間の合図
避ける場面
  • 数秒以上の待ちを 3 点だけで済ませる
  • 静的な返答を演出のために遅らせる
  • 読み上げ利用者に途中経過が要る画面
構成要素
  • ユーザーの吹き出し
  • AI の吹き出し
  • 3 点インジケータ
  • 点滅カーソル
  • もう一度ボタン
持っている状態
  • 通常
  • 読み込み中
キーボード

Tab で「もう一度」へ、Enter/Space で最初から再生。吹き出し自体は操作対象でない

支援技術

3 点は aria-hidden の装飾。考え中→回答完了は sr-only の role=status で「考え中」「回答: …」と読み上げ、文字の流し込みは 1 文字ずつ読まれない。reduced-motion で 3 点と点滅を停止

動き

3 点 1.2s バウンス(0.18s ずつ遅延)、1.3s 後に 45ms/文字で追記、カーソル 0.8s 点滅。reduced-motion で静止

デザインの要点

  • 考え中は 3 点バウンス、返答はカーソル付きの文字追記。「待っている」と「届いている」を別の形で見せる
  • 3 点は 0.18s ずつ遅らせて波にする。同時に跳ねると点滅に見えて、処理が止まったように感じる
  • 文字の追記は 45ms/文字。速すぎると一括表示と変わらず、遅いと読める速度を下回って苛立つ
  • 読み上げには 1 文字ずつ流さない。role=status に「考え中」と完成した回答だけを渡す
実装メモ

考え中(3点アニメ)→1文字ずつ追記(typing)の2段構え。実際はサーバ送信完了で点滅を止め、ストリーミングのチャンク受信ごとにテキストを追記します。タップ/クリックで最初からやり直せます。

コード(コピーして使えます)

<div class="chat">
  <div class="bubble user">AIってどんな返事するの?</div>
  <div class="bubble bot" id="botBubble">
    <span class="dots" aria-hidden="true"><i></i><i></i><i></i></span>
  </div>
  <p class="chat-sr" id="chatStatus" role="status" aria-live="polite"></p>
  <button class="chat-replay" id="chatReplay" type="button">もう一度</button>
</div>

タグ

同じカテゴリ「マイクロ・フィードバック」のほかのパーツ

関連パーツ