ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Odometer.js とは
HubSpot 製の OSS で、数値カウンタをスロットマシン(自動車のオドメータ)のように滑らかに変化させる JavaScript ライブラリ。ダッシュボードの KPI、決済額、いいね数の表示などで使われます。
- 依存: なし(純粋な JS + CSS)
- サイズ: 約 3KB (gzip)
- ライセンス: MIT
- GitHub:
HubSpot/odometer
導入: CDN で素早く
<!DOCTYPE html>
<html>
<head>
<!-- テーマ CSS(好きなものを 1 つ) -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/odometer.js/0.4.8/themes/odometer-theme-car.min.css">
</head>
<body>
<div id="odometer" class="odometer">0</div>
<button onclick="od.update(1234567)">変化させる</button>
<script src="https://cdnjs.cloudflare.com/ajax/libs/odometer.js/0.4.8/odometer.min.js"></script>
<script>
const el = document.getElementById('odometer');
const od = new Odometer({
el: el,
value: 0,
format: '(,ddd)',
duration: 2000,
theme: 'car'
});
</script>
</body>
</html>
npm / モジュールバンドラ
npm install odometer
# または
yarn add odometerimport Odometer from 'odometer';
import 'odometer/themes/odometer-theme-default.css';
const od = new Odometer({
el: document.querySelector('#counter'),
value: 0,
format: '(,ddd).dd',
theme: 'default',
});
// 1.5 秒後に 999.99 へ
setTimeout(() => od.update(999.99), 1500);
オプション一覧
| オプション | 説明 | 例 |
|---|---|---|
el | 対象 DOM 要素 | document.querySelector('#a') |
value | 初期値 | 0 |
format | 表示フォーマット | '(,ddd).dd' = 1,234.56 |
duration | アニメーション時間 (ms) | 2000 |
theme | テーマ名 | 'car' |
animation | 'count' (線形) / 'slide' (回転) | 'count' |
format のシンタックス
(,ddd)→ カンマ区切り整数 (例: 12,345)(,ddd).dd→ カンマ区切り小数 2 桁 (例: 12,345.67)( ddd).dd→ スペース区切りd→ 区切りなし
テーマ一覧
| テーマ | 雰囲気 | 用途 |
|---|---|---|
car | 古典的なオドメータ | 距離 / 累計値 |
digital | セグメント LED | 科技風 UI |
minimal | シンプル黒文字 | 汎用 / ダッシュボード |
plaza | 太字ボールド | 強調表示 |
slot-machine | スロットマシン | 抽選 / ゲーム |
train-station | パタパタ駅表示 | レトロ表現 |
各テーマは CSS ファイルを差し替えるだけ:
<!-- 切替えるだけ -->
<link rel="stylesheet" href=".../themes/odometer-theme-digital.min.css">
<link rel="stylesheet" href=".../themes/odometer-theme-minimal.min.css">
<link rel="stylesheet" href=".../themes/odometer-theme-plaza.min.css">
<link rel="stylesheet" href=".../themes/odometer-theme-slot-machine.min.css">
<link rel="stylesheet" href=".../themes/odometer-theme-train-station.min.css">
HTML だけで自動初期化
JS を書かずに、要素にクラスを付けるだけでも動きます:
<!-- odometer クラスを付けるだけで自動的に初期化 -->
<div class="odometer">12345</div>
<script>
// テキストを書き換えるだけで自動アニメ
setTimeout(() => {
document.querySelector('.odometer').innerHTML = 67890;
}, 1000);
</script>
実用例: ライブ更新するダッシュボード
// 5 秒ごとに API から取得して表示
const od = new Odometer({
el: document.getElementById('revenue'),
value: 0,
format: '(,ddd)',
theme: 'digital',
});
async function poll() {
const res = await fetch('/api/today-revenue');
const data = await res.json();
od.update(data.amount);
}
poll();
setInterval(poll, 5000);
CountUp.js との比較
| 項目 | Odometer.js | CountUp.js |
|---|---|---|
| 表現 | 桁ごとに回転(視覚的) | 数値を線形にカウント |
| テーマ | 6 種類同梱 | なし(自分で CSS) |
| サイズ | 約 3KB | 約 5KB |
| 更新頻度 | 停滞気味(2017〜) | 活発 |
| TS 型定義 | @types/odometer | 同梱 |
| 用途 | 派手な見せ場 | UI 全体に統一 |
FAQ
Q: 数値が変化しない
A: od.update(N) ではなく el.innerHTML = N を使う場合、要素に .odometer クラスが必要です。
Q: 小数点が表示されない
A: format: '(,ddd).dd' のように 小数桁分の d を明示してください。
Q: 負の値を扱える?
A: 公式は - 表示に未対応。CountUp.js または自前で記号を分離してください。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
同階層のページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?