こんにちは!
ジーニアスウェブのスギタです。
今月から平日3日の短時間だけですが、
いつもより1時間早く起きてランニングをしています。
朝活って時間を有効に使えて良いものだなぁと、気づきはじめた今日この頃です。
さて、皆さんはコーディングをする際
連番をつけたい時があると思いますが
どのようにコードを書いていますか?
手入力で、1、2、3・・・ってHTMLに記述されていますか?
そんなことしてたら、その項目が増えたり減ったりすると
その度にイチイチ書き換えないといけないですよね。
とっても面倒ですよね。
そこで便利な、CSSのcounter-increment
。
こちらを使用すれば、簡単に自動で連番をつけることが出来ますので
その方法を今回はご紹介いたします。
1、タイトルに連番をつけてみよう
まずは、下記のようなHTMLを準備します。
<ul> <li> <h2>タイトル</h2> <p>テキストが入ります。テキストが入ります。</p> </li> <li> <h2>タイトル</h2> <p>テキストが入ります。テキストが入ります。</p> </li> <li> <h2>タイトル</h2> <p>テキストが入ります。テキストが入ります。</p> </li> </ul>
今回はul,liを使用していますが、どんなタグでもOKです。
CSSは下記のように記述します。
ul li { counter-increment: title; } ul li h2::before { content: counter(title); }
連番表示をさせるための繰り返しの要素にcounter-increment
、
そして、連番表示をさせたい要素のbefore
要素にcounter(title)
を指定します。
今回はtitle
を指定していますが任意のものでOKです。
その結果下記のような表示が出来るようになります。
See the Pen counter-increment-01 by ジーニアスウェブ (@genius-web) on CodePen.0
2、タイトルに「第●回目」をつけてみよう
1でご紹介しましたものにほんの少しだけ記述を追加し、
「第●回目」など、連番+固定される文字を合わせる方法をやってみましょう。
HTMLは先ほど使用したものと同じものを使用します。
CSSもほぼ同じです。先ほどと違う箇所は下記となります。
ul li h2::before { content: "第"counter(title)"回目"; }
counter(title)
の前後に、固定される文字を入れます。
その際は、必ず""
(ダブルクォーテーション)もしくは、''
(シングルクォーテーション)で括ります。
結果はこちらです。
See the Pen counter-increment-02 by ジーニアスウェブ (@genius-web) on CodePen.0
3、タイトルとその中の項目の両方に連番をつけてみよう
先ほどのものからHTMLを変更しましたが
こちらも、どんなタグを使用しても問題ありません。
<dl> <dt>セミナー</dt> <dd>テキストが入ります。テキストが入ります。</dd> <dd>テキストが入ります。テキストが入ります。</dd> <dt>セミナー</dt> <dd>テキストが入ります。テキストが入ります。</dd> <dd>テキストが入ります。テキストが入ります。</dd> <dd>テキストが入ります。テキストが入ります。</dd> <dt>セミナー</dt> <dd>テキストが入ります。テキストが入ります。</dd> <dd>テキストが入ります。テキストが入ります。</dd> <dd>テキストが入ります。テキストが入ります。</dd> </dl>
CSSの書き方については、基本的に1、2と同様です。
今回はdt
とdd
の両方にcounter-increment
を記述しています。
dt { counter-increment: title; } dt::before { content: "第"counter(title)"回目"; } dd { counter-increment: list; } dd::before { content: "└ 内容"counter(list) ". "; }
これでうまくいくかと思いきや・・・
このままの記述で進めると、
下記のように「内容●.」の連番が全ての項目内で増えていってしまいます。
See the Pen counter-increment-04 by ジーニアスウェブ (@genius-web) on CodePen.0
それを回避するのがcounter-reset
というもの。
こちらを、連番をリセットしたい要素にcounter-reset
を記述。
今回の場合は、「第●回目」を境に「内容●.」の連番をリセットさせたいので、
下記のようにdt
にcounter-reset
を記述します。
dt { counter-reset: list; }
すると、項目ごとに連番が増えるようになりました!
See the Pen counter-increment-03 by ジーニアスウェブ (@genius-web) on CodePen.0
さいごに
いかがでしたでしょうか?
今回ご紹介したcounter-increment
は、
連番がついた要素を削除しても追加しても
勝手に数字が変わってくれるので、個人的にニヤリとなるCSSのひとつです。
ぜひ使ってみてくださいね。
それでは、また。