本文へスキップ

オドメーター数字ロール

各桁が縦に回転して数字が切り替わる、スロット/走行距離計のようなカウンタ。KPIや売上の更新を“動いて”見せる、count-upの上位版。

プレビュー

クリック

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

仕様書

向く場面
  • 売上・累計など更新を印象づけたい KPI
  • カウントアップより「動いた」感を出したい数字
  • 桁数が固定の数値
避ける場面
  • 桁数が変わる値・カンマや小数を含む値
  • 正確な値を即座に読ませたい業務画面
構成要素
  • カウンタ枠
  • 桁の窓
  • 数字の帯
  • ロールボタン
持っている状態
  • 通常
キーボード

Tab でロールボタンへ、Enter/Space で再ロール

支援技術

枠は role=img で aria-label に実値(カウンタ 12,345)を持ち、更新のたびに書き換える。帯の数字は aria-hidden で読まれない。reduced-motion で帯の回転を止め即時に止まる

動き

各桁の帯が 900ms ease-out で縦に回って止まる。数値の更新を動きで示す

デザインの要点

  • 桁ごとに 0〜9 の帯を作り translateY で目的の数字へずらす。文字を差し替えるより「回った」感が出る
  • 帯の高さ(46px)と窓の高さを同じにして overflow:hidden で切る。1px ずれると隣の数字がのぞく
  • 桁数は固定して 0 埋めする。桁が増減すると帯の本数が変わり、レイアウトが跳ねる
  • 実値は role=img の aria-label に持たせる。帯には 0〜9 が全部並んでいるので、そのまま読ませると意味を成さない
実装メモ

桁ごとに 0〜9 を縦に並べた帯を translateY でずらしています。桁数は固定(下の桁数pad)。カンマ区切りや小数を入れる場合はDOM構築を拡張してください。タップ/クリックで再ロールします。

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

<div class="odo-wrap">
  <div class="odo" data-value="0" role="img" aria-label="カウンタ 0"></div>
  <button class="odo-btn" type="button">ロール</button>
</div>

タグ

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

関連パーツ