CSS 速習チュートリアル

CSS カウンター

1. CSS カウンターとは?

CSS カウンター(CSS Counters)は、CSS によって管理される「変数」のようなもので、CSS ルールに従って値を増加させ、要素が何回使用されたかを追跡することができます。

これにより、HTML の構造を手動で変更することなく、見出しやリスト、図表などに自動的に番号(連番)を振ることが可能になります。

2. 自動ナンバリングの使用方法

CSS カウンターを使用するには、以下のプロパティと関数を組み合わせて利用します:

  • counter-reset: カウンターを初期化またはリセットします。通常、親要素に指定します。
  • counter-increment: カウンターの値を増加させます。
  • content: 擬似要素(::before::after)と組み合わせて、生成されたコンテンツを挿入します。
  • counter() または counters() 関数: カウンターの値を content プロパティに出力します。

以下の例では、ページ内のすべての <h2> 要素の前に「Section [番号]:」というテキストを自動的に挿入します。

body {
  /* "section" という名前のカウンターを 0 にリセット */
  counter-reset: section;
}

h2::before {
  /* "section" カウンターの値を 1 ずつ増加 */
  counter-increment: section;
  /* カウンターの値を表示 */
  content: "Section " counter(section) ": ";
}

3. ネストされたカウンター (Nested Counters)

CSS カウンターの真価は、ドキュメントの階層構造(章、節、項など)に合わせて自動的に「1.1」や「1.2.1」といった形式の番号を振れる点にあります。

counters() 関数を使用すると、ネストされたカウンター(入れ子構造)の各階層の間に任意の文字列(ピリオドなど)を挿入できます。

ol {
  /* 各 ol 要素ごとに新しいカウンター(section)をリセット */
  counter-reset: section;
  list-style-type: none;
}

li::before {
  /* カウンターを増加 */
  counter-increment: section;
  /* ネストされた全階層のカウンターをピリオドで繋いで表示 */
  content: counters(section, ".") " ";
}

4. カウンターのスタイリング

カウンターによって出力されるコンテンツは、通常のテキストと同様にスタイリングが可能です。擬似要素に対して colorfont-weightbackground-color などを適用することで、番号部分を強調したデザインを実現できます。

body {
  counter-reset: main-counter;
}

h1::before {
  counter-increment: main-counter;
  content: "Step " counter(main-counter) " - ";
  /* 番号部分の色とフォントサイズをカスタマイズ */
  color: #04AA6D;
  font-size: 1.2em;
  font-weight: bold;
}

5. CSS カウンタープロパティの一覧

プロパティ説明
counter-resetカウンターを作成、または既存のカウンターをリセットする。
counter-incrementカウンターの値を指定した数値分増加(または減少)させる。
content:before:after 擬似要素と併用し、生成されたコンテンツを挿入する。
counter()カウンターの現在の値を文字列として返す。
counters()ネストされたカウンターの値を指定した区切り文字で繋いで返す。

これらのプロパティをマスターすることで、静的な HTML ドキュメントに対して動的で整然としたナンバリングを付与し、保守性の高い Web ページを構築できるようになります。