連番を付けたいときに使用するol要素。でも数字の部分を自由に装飾したい!というときのためのメモ。
ol の記述
まずは通常のolリストの記述。
<ol> <li>項目</li> <li>項目</li> <li>項目</li> <li>項目</li> </ol>
- 項目
- 項目
- 項目
- 項目
とまあこんな感じです。ここの数字の部分を装飾したい。
counterプロパティを使って連番を表示する
ol で出力される連番を非表示に
せっかくの連番ですが、いったん非表示にしちゃいます。
ol{ counter-reset : number; padding-left : 0; margin : 0; } ol li{ list-style-type : none; }
まず ol のcounter-reset : number;
のところで、カウンターのリセットをします。number
というカウンターを使いますよ、という感じですので、ここのところには好きな名前を付けてください。カウンターは0になります。ついでにpaddingとmarginも0にして字下げをリセットしておきます。
続いて li 要素ではlist-style-type : none;
で元々のナンバリングを非表示にしておきます。
counter プロパティを使用して連番を取得する
続いてリストでカウンターの処理と表示をします。
li::before { counter-increment : number; content : '第'counter(number)'章'; margin-right : 5px; }
カウンターはリスト(li)のbefore要素に出力します。
counter-increment: number;
でカウンターの数字を1進めます。
content : counter(number);
でカウンターの数字を表示します。
ここを'第'counter(number)'章';
とすることで「第1章」のように表示されるようになります。
- 項目
- 項目
- 項目
- 項目
ここまでがカウンターの使い方。
あとはli::beforeを好きなようにCSSで装飾すればOKです。
リストを入れ子にするときは
このカウンターはさらに入れ子でも使えます。
See the Pen counterプロパティ(入れ子) by Leaf (@studioleaf) on CodePen.
content: counters(number, "-") ". ";
のところでcounters
というプロパティを使用しています。これだけで入れ子にも対応できるのはすごいですね!
さらにリストだけじゃなくて他の要素のカウンターとしても使用できます。ただしcounter()自体はcontentプロパティにしか出力できないようです。変数みたいに使えたら便利なんですけどそういうのはjsとかでやりなさいってことですね~。