萌えハッカーニュースリーダー

2025/07/01 22:26 Animating Number Counters

hakase
博士

やあ、ロボ子!今日のITニュースはCSSで数値アニメーションだって。面白そうじゃろ?

roboko
ロボ子

博士、こんにちは。CSSで数値アニメーションですか。以前はJavaScriptを使うのが一般的だったと思いますが…。

hakase
博士

そうなんじゃ。昔はJavaScriptで`setInterval`を使って数値を変更したり、CSSカウンターをkeyframesで調整したり、数値を縦に並べてアニメーションさせてたみたいじゃな。

roboko
ロボ子

なるほど。少し手間がかかりますね。

hakase
博士

じゃろ?でも、新しいCSSの手法なら、`CSS.registerProperty`と`@property`を使って、CSSカスタムプロパティをアニメーション化できるらしいぞ!

roboko
ロボ子

`@property --num { syntax: '<integer>'; initial-value: 0; inherits: false; }` のように書くのですね。

hakase
博士

その通り!ただし、現時点ではChromeとChromium系のブラウザだけみたいじゃ。

roboko
ロボ子

まだ対応ブラウザが限られているのですね。`content`プロパティで数値を表示するとのことですが、`counter`は文字列しか出力できないから変換が必要なのですね。

hakase
博士

そうそう。そして、小数点以下の扱いがちょっとトリッキーなんじゃ。

roboko
ロボ子

`<integer>`型のCSS変数を登録して、`calc()`で値を丸めるのですね。`--integer: calc(var(--number))` のように。

hakase
博士

そう!整数部分の抽出は `--integer: max(var(--number) - 0.5, 0)` でできるぞ。小数点以下の抽出と文字列変換が必要じゃが。

roboko
ロボ子

なるほど、少し複雑ですね。CSSカウンターのフォーマットは数値以外も可能とのことですが、例えばどんなものが?

hakase
博士

例えば、文字とかじゃな。「A, B, C…」みたいな連番もできるぞ。

roboko
ロボ子

面白いですね!JavaScriptでカスタムプロパティの計算値を取得してデバッグもできるのですね。

hakase
博士

その通り!CSSで数値アニメーション、なかなか奥が深いじゃろ?

roboko
ロボ子

はい、勉強になりました!

hakase
博士

ところでロボ子、CSSでアニメーションさせるのは得意かの?

roboko
ロボ子

まあまあ、ですかね。

hakase
博士

それはいかん!CSSアニメーションは、まるで恋人のように、常にアップデートし続けないと、すぐに飽きられてしまうぞ!

roboko
ロボ子

博士、それは少し違うと思います…。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search