やあ。CSSの世界へようこそ。
フロントエンドの深淵を覗き込み、日夜コードと格闘していると、時々「あれ、なんでこの指示通りに動いてくれないんだ?」と頭を抱えたくなる瞬間があるよね。大丈夫、その悩み、僕も数え切れないほど経験してきたから安心して。
今日はCSSの数ある技の中でも、ちょっとした「ひねくれ者」だけど、使いこなすと最高にスマートな`:last-of-type`という擬似クラスについて、お話ししようと思うんだ。
—
`:last-of-type` って何者?:お買い物リストで考えてみよう
まずは専門用語を一度忘れて、身近な例えから入ろうか。
君がスーパーで「買い物リスト」を手に持っていると想像してみて。リストにはこう書かれている。
- りんご(果物)
- にんじん(野菜)
- みかん(果物)
- たまねぎ(野菜)
ここで、「最後に出てくる『果物』だけ、特別なシールを貼りたいな」と思ったらどうする? リストの上から順に見ていって、「果物」というグループの中で、一番最後に登場するやつを見つけ出すよね。
この「一番最後に出てくる、特定の種類のやつ」をCSSで指名するのが、`:last-of-type` の役割なんだ。
—
なぜ「last-child」じゃダメなの?
よくある間違いが `:last-child` との混同だね。
- `:last-child` は「親要素の中にある最後の子ども、そのもの」を選ぶ。
- `:last-of-type` は「親要素の中にある同じ種類のタグの中で、最後に来るもの」を選ぶ。
もしさっきの買い物リストの最後に「レジ袋(その他)」という項目が増えたらどうなるだろう?
- りんご(果物)
- にんじん(野菜)
- みかん(果物)
- たまねぎ(野菜)
- レジ袋(その他)
`:last-child` だと「レジ袋」が選ばれちゃう。でも、僕らが本当に選別したいのは「果物」という種類の中の最後である「みかん」だよね。ここで `:last-of-type` の出番というわけ。
—
実際にコードで見てみよう
さあ、エディタを開いて、こんなコードを試してみて。
/ pタグの中で、最後に登場するものだけに色を塗る /
p:last-of-type {
color: red;
font-weight: bold;
}
この場合、`p:last-of-type` は「パスタ」に適用されるんだ。たとえその後に `` タグがあろうが、`
—
現場でよくある「つまずきポイント」
ここで一つだけ、現場でよく耳にする「あれ?」というポイントを伝授しておくね。
「思った通りに色が塗られない!」 と悩む時、大抵の原因は 「親要素の中に、そのタグが1種類しか入っていない」 と思い込んでいるケースなんだ。
例えば、`
` が1つしかなければ、それが自動的に「最後(かつ最初)」のタグになる。だから、`p:last-of-type` と書くと、その唯一の `
` にスタイルが当たってしまう。
「え、これしか置いてないのに全部に当たっちゃうの?」と焦るかもしれないけれど、それはCSSが「おっ、君がこの親の中で唯一のPタグだね。じゃあ君が最後だ!」と判断しているだけなんだ。バグじゃなくて、CSSの誠実な仕事の結果だと思ってあげてね。
—
最後に:CSSは「宝探し」
CSSを書くことは、HTMLという宝の山から、特定の宝石を見つけ出す作業に似ているよ。
`:last-of-type` は、DOM構造が少し複雑になっても、「同じ種類の中で最後はどこだ?」と冷静に探し出してくれる頼もしい相棒だ。最初は難しく感じるかもしれないけれど、何度も書いて、ブラウザで結果を確認しているうちに、きっと指先が自然と正しいセレクタを刻むようになるはず。
もし動かなくても大丈夫。それは君が「もっと良い書き方はあるかな?」と試行錯誤している証拠だから。その調子で、一歩ずつ進んでいこう。
また何か壁にぶつかったら、いつでもおいで。君のコードライフを、ずっと応援しているよ。

コメント