Counter()関数を使用してCSSだけカウントアップできる
カウントアップする機能をCSSを用いて表現できます。順序付きリストのようなものです。
使い方
- count-rest: cnt; で初期化する
- counter-increment: cnt; で増加
- counter-increment: cnt -1;で減少
- counter(cnt); で現在の値
- 通常は擬似要素contentプロパティで使用する
.area1 {
counter-reset: cnt;
}
.area1 p::before {
counter-increment: cnt;
content: counter(cnt) ": ";
}
001
002
003
p要素の手前の数値がインクリメントされていますね。
ol,li要素だけでなく自由に番号を振れます。すごいですね。
逆カウンター
counter-reset: reversed(cnt);
カウントダウンする。
chrome非対応(2022.9
補足
いくつかの変数(変数とは表記されていないが)の初期化、増減を同時にできる。
階層がある場合適宜リセットすると、その都度、子は1から始まる。多階層のol>liで、olでリセットするなど。
Containment(封じ込め)されている場合
<style>
.contain {
contain: style;
background-color: aliceblue;
}
</style>
<div class="area1">
<p>001</p>
<p>002</p>
<div class="contain">
<p>003</p>
<p>004</p>
<p>005</p>
</div>
<p>006</p>
</div>
001
002
003
004
005
006
スタイルが封じ込められている場所がスルーされる。スタイルが分離されています。
封じ込め領域内でもカウントは進まない。
補足
@counter-style 独自のスケールを使える。デモが参考になります。