【入門編】contentプロパティとcounters()関数の連携 – HTML実践ガイド

HTMLのリストに「1.1, 1.2」と自動で番号を振る!CSSの魔法「counters()」を使いこなそう

こんにちは!Web制作の世界へようこそ。

HTMLでリストを作るとき、`

    `や`

      `をよく使いますよね。でも、たまにこんな悩みにぶつかることはありませんか?

      「入れ子(ネスト)になったリストで、親が『1』なら、子供は『1.1』『1.2』と自動で番号を表示させたい…」

      実はこれ、JavaScriptをガリガリ書かなくても、CSSの「カウンター」という機能を使うだけで、いとも簡単に実現できるんです。

      今回は、魔法のように階層番号を操る`counter-increment`と`counters()`関数の世界を、一緒に覗いてみましょう!

      —

      なぜ「カウンター」を使うの?

      例えば、お役所の書類や取扱説明書を想像してみてください。「第1章」の中に「1-1 はじめに」「1-2 準備するもの」と書かれていますよね。

      HTMLの`

        `タグを使えば自動で「1, 2, 3…」と番号は振られますが、2階層目になるとまた「1, 2, 3…」に戻ってしまいます。これを手動で「1.1」「1.2」と書き直すのは、修正が入ったときに地獄を見ます(笑)。

        そこで登場するのがCSSの「カウンター」です。これは、CSSが裏側で「いま、何番目かな?」と数字をカウントしてくれる仕組みなんです。

        —

        魔法のレシピ:カウンターの設定手順

        やることは大きく分けて3つだけ。難しく考えすぎないでくださいね。

        1. `counter-reset`: カウンターを「0」にリセットして初期化する。
        2. `counter-increment`: 要素が現れるたびに「1」ずつ増やす。
        3. `counters()`: 溜まった数字を画面に表示する。

        言葉にすると少し堅苦しいですが、実際にコードを見てみましょう。

        実践コード:階層リストを作ってみよう

        まずはHTMLで、ごく普通の入れ子リストを用意します。

        1. 章の見出し
          1. 節の見出し
          2. 節の見出し
        2. 章の見出し
          1. 節の見出し

        次に、CSSで魔法をかけます。

        / カウンターの名前を「my-counter」と決めます /
        .tree-list {
        list-style: none; / デフォルトの数字を消す /
        counter-reset: my-counter; / ここでカウンターを初期化! /
        }

        .tree-list li {
        counter-increment: my-counter; / liが出るたびにカウントアップ /
        }

        .tree-list li::before {
        / counters関数で、階層ごとの数字をドットで繋いで表示 /
        content: counters(my-counter, “.”) ” “;
        font-weight: bold;
        }

        —

        ここで「なるほど!」ポイント

        このコードの肝は、`content: counters(my-counter, “.”);` の部分です。

        • `counters()`(複数形!): これが一番のポイントです。最後に「s」がついているのがわかりますか? これを使うことで、親から子へ、階層を超えて数字を繋げることができるんです。
        • `”.”`: これは「数字と数字の間に何を入れるか」という区切り文字です。ここを「-(ハイフン)」に変えれば「1-1」になりますし、「 / 」に変えれば「1 / 1」にもできます。お好みで遊んでみてくださいね。

        —

        つまずきやすいポイントへのフォロー

        「あれ、思った通りに数字が出ない…」というときは、だいたいこの2つのどちらかです。

        1. `counter-reset` を書く場所: 親の要素(この場合は `.tree-list`)に書いていますか? これを忘れると、カウントが始まりません。
        2. `::before` 擬似要素: 番号を表示させるには、`li::before`(リスト項目の直前)という場所を指定してあげる必要があります。ここを忘れて「表示されない!」と悩むのは、誰もが一度は通る道です。大丈夫、何度でも書き直せばOKです!

        —

        まとめ:CSSは「表示の達人」

        いかがでしたか?
        JavaScriptで無理やり番号を生成しようとすると、ページを読み込むたびに計算が必要で少し重たくなってしまいますが、CSSならブラウザが瞬時に描画してくれます。

        「構造はHTMLで、見栄えや番号はCSSで」。この役割分担ができるようになると、Web制作がグッと楽しく、そして楽になりますよ。

        ぜひ皆さんのサイトでも、この「カウンターの魔法」を試してみてくださいね!何かうまくいかないことがあれば、いつでもまた聞きに来てください。応援しています!

コメント

タイトルとURLをコピーしました