ol 要素のリストを 1-1 や 1.1 のように表示する方法

CSS のイメージ。

通常 ol 要素は「1. 2. 3.…」のように 1 つの数字だけを順に並べていきます。 例えば親要素となる ol 要素 1 の中に子要素となる ol 要素が含まれるとき、子要素の数字は 1 となります。

しかしながら、書籍や書類のようなレイアウトでは「1-1」や、あるいは「1.1.1」のように表記することが良くあります。 このような数字の変更は、CSS を使って実現することができます。

「1-1」や「1.1.」のようにする方法

ol 要素の数字を「1-1」や「1.1.」のように表記するには、counter-reset, counter-increment プロパティと、値 counters を使います。 具体的には次のコードのようになります。

ol
{
    counter-reset: section;
    list-style-type: none;
}
li:before
{
    counter-increment: section;
    content: counters(section, ".") ".";
}

プロパティ content の値 counters は、1 つ目の引数に section、2 つ目の引数に区切り文字を指定します。 さらに countent の末尾に、数字の右端に挿入する文字を指定します。

対応するブラウザ

Chrome, Safari, FireFox Opera, Android, iOS, などの比較的新しいバージョンの他、IE は 8 ~ 対応します。 IE を考慮する必要がないので、積極的に使うことができます。

h1 要素などの異なる要素でも数を数える

counter-reset, counter-increment は h1 などの異なる要素にも使うことができます。

h1
{
    counter-reset: section;
}

h1:before
{
    counter-increment: section;
    content: counter(section) ".\00A0";
}

Reference