CSS
知っておくと便利!CSSだけで自動カウントする方法【CSSカウンタ】
2019年09月03日 8:00
おはようございます!社員Aです👩
今回は、CSSだけで自動カウント(CSSカウンタ)する方法をご紹介したいと思います。
「自動カウントはjsでしかできないのでは‥?」と思われるかもしれませんが、CSSでも簡単にできますのでこの機会にぜひ覚えてみましょう!
CSSの自動カウンタ(CSSカウンタ)ってなに?
そもそもCSSカウンタってなに?と思われるかもしれませんので、ご説明します!(笑)
CSS カウンターは、文書内の位置に基づいてコンテンツの表示方法を調整することができます。
例えば、ウェブページ内の見出し番号を自動的に振るのに使ったりします。
カウンターは本質的に、 CSS が管理する変数であり、 CSS の規則によって増加し、何回使用されたかを追跡するものです。
引用:https://developer.mozilla.org/ja/docs/Web/Guide/CSS/Counters
つまり、CSSだけを使って自動的に見出し番号を振ったりすることのできる機能です。
CSSセレクタ基本のルール
- 親要素に「counter-reset: xxx;」を指定。(xxxの部分は任意)
- 自動カウントしたい要素に「counter-increment:xxx」「content: counter(xxx);」を指定。
実際に上記ルールを適用してみました。
HTML
<div class="box"> <h1>これは見出しです。</h1> <p>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p> <h1>これは見出しです。</h1> <p>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p> <h1>これは見出しです。</h1> <p>テキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキストテキスト</p> </div>
CSS
.box{ width:500px; margin:50px auto 0 auto; counter-reset: num; } .box h1::before{ counter-increment:num; content: counter(num); }
表示
h1の疑似要素「:before」を使って簡単に見出しの前に自動カウントできました。
見出しではなくても、リストなどでも応用できそうです。
わざわざ数を数えながら入れ込みをする手間も減りますし、要素を入れ替えても番号順になるのでとても便利です!
自動カウントの開始する数を変更する
自動カウントの開始する数や、間隔も変更ができます。
例えば下記のようなシーンです。
- 5からカウントを始めたい
- 2ずつ飛ばしてカウントさせたい
HTMLは先程と同様のまま、CSSだけ変更します。
CSS
.box{ width:500px; margin:50px auto 0 auto; counter-reset: num 5; } .box h1::before{ counter-increment: num 2; content: counter(num); }
.box要素に指定している「counter-reset」に、「num」と初期値である「5」を指定します。
そして、ナンバリングしたい要素には「counter-increment」に、「num」と飛ばしてカウントしたい「2」を指定します。
表示
このカスタマイズでナンバリングの幅がぐっと広がりました。様々な用途に合わせて使えそうです。
数字以外にも漢数字や白丸なども指定できる
CSSカウンタのデフォルトは数字ですが、こちらも指定することにより漢数字や白丸などに変更ができます。
CSS
.box{ width:500px; margin:50px auto 0 auto; counter-reset: num; } .box h1::before{ counter-increment: num; content: counter(num,cjk-ideographic); }
「content」部分に、カンマで区切りを入れて指定します。
下記表にあるプロパティをいれていただくと、変更できます。
armenian | アルメニア数字 |
---|---|
circle | 白丸 |
cjk-ideographic | 漢数字 |
decimal | 算用数字 |
decimal-leading-zero | 先頭に0をつけた算用数字 |
georgian | グルジア数字 |
hebrew | ヘブライ数字 |
hiragana | ひらがな(50音順) |
hiragana-iroha | ひらがな(いろは順) |
inherit | listStyleType |
katakana | カタカナ(50音順) |
katakana-iroha | カタカナ(いろは順) |
lower-alpha | 小文字のアルファベット |
lower-greek | 小文字のギリシャ文字 |
lower-latin | 小文字のアルファベット |
lower-roman | 小文字のローマ数字 |
upper-alpha | 大文字のアルファベット |
upper-latin | 大文字のアルファベット |
upper-roman | 大文字のローマ数字 |
関連記事
この記事を書いた人
社員A
入社8年目。フロントエンドエンジニア・デザイナーの社員Aです。 小動物が好きで、デグー・チンチラと暮らしています!トレンドの情報を発信できるようにがんばります☺