【CSS】CSSカウンター入門|番号を自動で付与する基本と活用例

CSSカウンターとは?初心者でもできる番号自動付与の基本

Webサイトを作っていると、リストや段落に番号を振りたい場面が多々あります。
HTMLの<ol>タグを使えば自動的に番号が付与されますが、「思った通りにデザインできない」「見出しや段落に番号を振りたい」といったケースも多いのではないでしょうか。
そこで役立つのが「CSSカウンター」です。
CSSカウンターを使うと、番号付けをCSSで管理できるため、HTMLをシンプルに保ちながら自由に番号を制御できます。

CSSカウンターの歴史とブラウザ対応

CSSカウンターはCSS2(1998年策定)で初めて登場しました。
その後、CSS3では「Lists and Counters Module」として拡張され、番号形式の指定や柔軟なコントロールが可能になっています。

主な対応ブラウザは以下の通りです:

  • Google Chrome:完全対応
  • Firefox:完全対応
  • Safari / iOS Safari:対応済み
  • Microsoft Edge:対応済み(Chromium版以降)
  • Internet Explorer:IE8以降で対応

現在主流のブラウザであれば安心して使える機能と考えてよいでしょう。

CSSカウンターの基本仕組み

CSSカウンターは以下の3つのプロパティを組み合わせて使います。

  • counter-reset:カウンターを初期化
  • counter-increment:要素ごとにカウンターを増やす
  • content: counter():番号を表示する

基本コード例:リストに番号を付ける

通常の<ul>タグを番号付きリストに変換する例です。

  ul.counter-list {
    counter-reset: item; /* カウンターを初期化 */
  }
  ul.counter-list li {
    counter-increment: item; /* 各liごとに+1 */
  }
  ul.counter-list li::before {
    content: counter(item) ". "; /* 番号を表示 */
    font-weight: bold;
    margin-right: 0.5em;
  }
  

このコードで、<ul>が「1.」「2.」「3.」と番号付きになります。
<ol>より柔軟にデザインできるのが大きなメリットです。

応用例1:ローマ数字で表示する

番号をローマ数字に変換することも可能です。

  ul.roman-list {
    counter-reset: section;
  }
  ul.roman-list li {
    counter-increment: section;
  }
  ul.roman-list li::before {
    content: counter(section, upper-roman) ". ";
    font-weight: bold;
    margin-right: 0.5em;
  }
  

counter(section, upper-roman) と指定することで、「I」「II」「III」のようにローマ数字で表示されます。
lower-romanを使えば小文字のローマ数字にも対応できます。

応用例2:「STEP1」形式の手順ガイド

手順解説記事でよくある「STEP1」「STEP2」といった形式も簡単に作れます。

  .steps {
    counter-reset: step;
  }
  .steps li {
    counter-increment: step;
    list-style: none;
    margin-bottom: 1em;
  }
  .steps li::before {
    content: "STEP" counter(step);
    display: inline-block;
    background: #007acc;
    color: #fff;
    padding: 0.2em 0.6em;
    border-radius: 4px;
    margin-right: 0.5em;
    font-weight: bold;
  }
  

上記のコードを使えば、手順リストが自動的に「STEP1」「STEP2」とラベル付きで表示されます。
ガイドやマニュアル、LPの手順説明などにとても有効です。

よく使われるシーン

  • 記事やマニュアルの段落番号
  • 図表キャプション(図1・図2)
  • ステップ形式の操作説明
  • ページ内目次の自動生成

特に長文記事やチュートリアルでは、番号があるだけで理解がスムーズになります。
CSSカウンターを使うことで、デザインと可読性を同時に高められます。

CSSカウンターのメリットと注意点

  • HTMLをシンプルに保てる(手入力不要)
  • デザイン自由度が高い(色・装飾変更可能)
  • 要素の追加・削除に強い(自動更新)
  • 番号形式が豊富(数字・ローマ数字・英字・STEPなど)
  • 主要ブラウザで安心して使える

注意点:

  • IE7以前は非対応
  • 印刷・PDF変換では崩れる可能性あり
  • スクリーンリーダー環境では意味付けを考慮する必要がある

CSSカウンターで番号管理をスマートに

CSSカウンターは、CSS2で導入され、現在の主要ブラウザで安定して利用できる便利な機能です。
リストや段落に自動で番号を付与でき、HTML構造をすっきりさせながら自由なデザインが可能です。
ローマ数字やSTEP形式などの応用例も含め、初心者でもすぐに取り入れられるテクニックです。

関連記事

【CSS】CSS3による枠線の新しい表現方法

CSS3より定義された「Border Radius」「Border Image」を使うことで角丸のボックスや、罫線の装飾によってこれまで画像で作成していた要素をCSSのみでデザインすることができるようになりました。 角丸(border-radius) 「b...続きを読む

2015.02.08CSSHTMLコーディング

Webで最も人気のあるフロントエンド·テンプレート『html5-boilerplate』

『html5-boilerplate』は無償でコピー、加工、再配布が可能なHTML5ベースのテンプレートパッケージです。 このパッケージのコンセプトとして、フロントエンド(初期段階)にかかる作業を短縮して、高速で堅牢、柔軟性のあるWEBアプリやサイトを素早く構築すること...続きを読む

2015.02.06HTMLコーディング

【WP】標準ギャラリーをスライド式にするプラグイン『WordPress Canvas Gallery』

『WordPress Canvas Gallery』は、WordPressの標準ギャラリーをスライド式のギャラリーに対応させることができるプラグインです。 『WordPress Canvas Gallery』ダウンロード プラグインは「wordpress.org」のプ...続きを読む

2015.02.18WordPress

【WP】ログインページをカスタマイズする方法

WordPressのログインページはプラグインなどを利用してカスタマイズすることができます。 今回は、プラグインを使わずにアクションフックを利用してWordPressのログインページで利用されるCSSをカスタマイズしてオリジナルのデザインに変更する方法をご紹介します。 ...続きを読む

2015.02.25WordPress

モバイル端末の画面サイズまとめ

WEBサイトを制作するときのサイズの基準になるのが画面の解像度です。 基本的には、ディスプレイサイズに合わせてデザインされるので、横幅が920px~1024pxあたりでレイアウトされるのが主流といえます。 最近では、スマートフォンやタブレットなどでWEBサイトを閲覧する機...続きを読む

2015.02.06HTMLコーディング