【入門編】 :only-of-type 疑似クラス – CSS実践ガイド

やあ、CSSの世界へようこそ。フロントエンドの現場に長くいると、「これさえ知っていれば、わざわざクラス名を追加しなくて済んだのに!」という場面に何度も出くわします。

今日は、そんな「かゆいところに手が届く」ちょっと粋な存在、`:only-of-type` についてお話ししましょう。名前は少し難しそうですが、考え方はとてもシンプルで、人間味あふれるルールなんですよ。

—

:only-of-type って、どんな魔法?

想像してみてください。あなたは今、スーパーマーケットのレジに並んでいます。
「あ、このレジ、並んでいるのは私一人だけだ!」と気づいたとき、あなたは「唯一の客」ですよね。

`:only-of-type` は、CSS界の鋭い監視員です。親要素(レジの空間)の中に、「特定の種類のタグ(例えば `

` タグ)」がたった一つしか存在しないときにだけ、その子を見つけ出してスタイルを適用してくれます。

もしそのレジに他の `

` タグが一人でも並んでいたら? 監視員は「おっと、今日は一人じゃないな」と判断して、何も反応しません。非常に控えめで、空気を読むのが上手な疑似クラスなんです。

—

なぜこれを使うの?

Webサイトを作っていると、「要素が一つしかない時だけ、特別なレイアウトにしたい」という場面によく出くわします。

  • 「記事の本文が1段落しかないなら、文字を大きくして強調したい」
  • 「画像が1枚しかないなら、枠線を消してスッキリ見せたい」

こんなとき、わざわざ `class=”only-paragraph”` なんて名前をHTMLに付けるのは少し面倒ですよね。CSSだけでスマートに解決できるのが、この `:only-of-type` の魅力です。

—

実際にコードを書いてみよう

百聞は一見にしかず。まずはエディタを開いて、以下のコードを試してみてください。

/ 記事ボックスの中にある要素をチェックします /
.article-box p {
/ 通常の段落のスタイル /
color: #333;
}

/
もし、この p タグが親要素の中で「唯一の p タグ」だったら、
特別に青色にして、文字を大きくします!
/
.article-box p:only-of-type {
color: #007bff;
font-weight: bold;
font-size: 1.2rem;
}

こんにちは!私は一人ぼっちの段落です。

私は1番目の段落。

私は2番目の段落。仲間がいるので青くなりません。

どうですか? ちゃんと一つだけある時だけスタイルが変わりましたよね。

—

つまずきやすいポイント:仲間はずれは気にしない

ここが少しだけ混乱しやすいところです。`:only-of-type` は、「同じ種類のタグ」だけをカウントします。

例えば、`

` の中に `

` が一つと、`` が一つあったとします。このとき、`

` タグは「`p` という種類の中では唯一」なので、ちゃんと選ばれます。

「他のタグがあるから、唯一じゃないのでは?」と心配になるかもしれませんが、大丈夫です。監視員はあくまで「同類がいないか」をチェックしているので、隣に誰がいようと「お前は一人だね、よし!」と判断してくれるんです。優しい世界ですね。

—

現場のチーフアーキテクトからのアドバイス

実務で `:only-of-type` を使うときは、「将来、要素が増えるかもしれない」という可能性をいつも頭の片隅に置いておいてください。

今は一つしかなくても、明日にはコンテンツが増えて二つになるかもしれません。そのとき、突然デザインが崩れないか? もしくは、二つになったらなったで「ちょうどいいレイアウト」になるように設計されているか?

CSSは単なる装飾ではなく、コンテンツの成長を見守る「器」を作る仕事です。`:only-of-type` はその器をより柔軟に、より美しくするための強力な武器になります。

最初は難しく感じるかもしれませんが、まずは自分のブログや練習用のページで、「ここ、一つしかないから使ってみようかな?」と試してみてください。その小さな挑戦が、あなたのコードをプロの仕上がりに変えていくはずですよ。

また何か分からないことがあれば、いつでも聞きに来てくださいね。応援しています!

コメント

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