本文へスキップ

リアルタイム風スパークライン

1秒ごとに新しい値が追加され、折れ線グラフが左に流れる。現在値と変化方向をリアルタイムで表示。

プレビュー

自動再生

操作自動で再生されます。

仕様書

向く場面
  • CPU・トラフィックなど流れる指標の監視
  • 現在値と直近の傾向を小さく見せるカード
  • 更新頻度が秒単位のダッシュボード
避ける場面
  • 過去の正確な値を読ませたい分析
  • 更新が数分に 1 回の指標(流れる意味が無い)
構成要素
  • 指標ラベル
  • 現在値
  • 変化方向の矢印
  • 折れ線と面
  • 時間軸ラベル
持っている状態
  • 通常
キーボード

操作要素なし(表示のみ)

支援技術

現在値はテキスト、方向は矢印(aria-hidden)に加えて隠しテキスト「上昇/下降/横ばい」で読める。svg は role=img で直近 20 秒の最小・最大を aria-label に持つ。毎秒の更新は aria-live にしない。非表示タブでは更新を止める

動き

1 秒ごとに点を追加して再描画(補間なし)。矢印の色 300ms

デザインの要点

  • 点は 20 個固定で先頭を捨てて末尾に足す。配列を伸ばし続けると描画が重くなり、横軸の意味も変わる
  • 補間せず 1 秒ごとに描き直す。滑らかに流すと「今の値」がどこか分からず、監視用途では逆効果
  • 面(グラデーション)は線の下に薄く敷くだけ。濃いと最新の 1 点が埋もれる
  • タブが非表示のときは setInterval を止め、戻ったら再開する。裏で回し続けると電池と CPU を無駄にする

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

<div class="rs-wrap">
  <div class="rs-header">
    <span class="rs-label">CPU 使用率</span>
    <span class="rs-current">
      <span class="rs-val">--</span><span class="rs-unit">%</span>
      <span class="rs-arrow" aria-hidden="true">→</span>
      <span class="rs-sr" id="rs-dir">横ばい</span>
    </span>
  </div>
  <svg class="rs-svg" viewBox="0 0 220 90" preserveAspectRatio="none" role="img" aria-label="直近20秒の推移">
    <defs>
      <linearGradient id="rs-grad" x1="0" x2="0" y1="0" y2="1">
        <stop offset="0%" stop-color="#2b50c7" stop-opacity="0.25"/>
        <stop offset="100%" stop-color="#2b50c7" stop-opacity="0"/>
      </linearGradient>
    </defs>
    <path class="rs-area" d=""/>
    <polyline class="rs-line" points=""/>
  </svg>
  <div class="rs-footer" aria-hidden="true">
    <span>20秒前</span><span>現在</span>
  </div>
</div>

タグ

同じカテゴリ「データ可視化・ダッシュボード」のほかのパーツ

関連パーツ