CSS Web制作

【CSS】擬似クラス『:first-child』と『:first-of-type』の違いとは【サンプル付きで解説】

※ 当サイトではアフィリエイト広告を利用しています

最初の要素を指定する方法が2つあるみたいだけど違いって何?
実際に見たら分かると思うよ!

CSSで最初の要素を指定する擬似クラスに:first-child:first-of-typeがあるのですが、その違いについて今回は解説していきます。

 

完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
  • 30日間でWeb制作を学べる
  • 完全無料
  • 現役エンジニアへの質問無制限
  • オンラインの動画学習なので時間場所を問わず勉強可能
  • 最大4回の学習サポート面談
  • 受付は1日25名までの先着制
無料なのに専属のメンターが付き、現役エンジニアへの質問も無制限という破格のサービスです。
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇

\ 完全無料 /

ZeroPlus Gate公式サイト

先着1日25名まで!

最初の要素を指定する擬似クラス『:first-child』と『:first-of-type』の違いとは

まずはそれぞれの違いを文章で見てみます。

:first-child

兄弟要素の中で『最初の要素』を指定

:first-of-type

兄弟要素の中で『指定した要素の最初の要素』を指定

これだけ見てもピンとこないと思うので、デモを見てみたいと思います。

今回ベースとなるHTMLはこちらになります(実際のコードとはちょっと違いますが、必要な部分だけ書いています)

<div class="box">
  <h2>1</h2>
  <span>2</span>
  <span>3</span>
  <span>4</span>
  <p>5</p>
  <p>6</p>
  <p>7</p>
  <p>8</p>
  <p>9</p>
  <p>10</p>
</div>

この.box内にある要素は全て兄弟要素となります。

そして指定した要素の文字色を赤色にしたいと思います。

 

h2タグを指定した場合

まずはh2タグをそれぞれの方法で指定してみます。

.box h2:first-child {
  color: red;
}

.box h2:first-of-type {
  color: red;
}

See the Pen
CSSの要素指定( )
by junpei (@junpei-sugiyama)
on CodePen.

同じ結果になりましたね。

指定した要素が兄弟要素の最初の要素である『h2タグ』なので、どちらもスタイルが適用されました。

 

spanタグを指定した場合

今度はspanタグをそれぞれの方法で指定してみます。

.box span:first-child {
  color: red;
}

.box span:first-of-type {
  color: red;
}

See the Pen
by junpei (@junpei-sugiyama)
on CodePen.

今回は:first-childが効いていません。

CSSでの指定はspan:first-childですね。

しかし:first-childは『兄弟要素の最初の要素』を指定するもので、今回のHTMLでは『兄弟要素の最初の要素』はspanタグではなくh2タグです。

兄弟要素の最初の要素(h2タグ)ではない要素(spanタグ)を指定したので適用されてないという事です。

そして:first-of-typeの方は兄弟要素の中の指定した要素の最初の要素を指定します。

今回の場合はspanタグの事を指します。

なのでspanタグの最初の要素である2にスタイルが適用されたという事です。

それではもう一度HTMLを見てみます。

<div class="box">
  <h2>1</h2> <!-- 兄弟要素の『最初の要素』 -->
  <span>2</span> <!-- 兄弟要素の中の『指定した要素の最初の要素』(ここではspanタグを指定) -->
  <span>3</span>
  <span>4</span>
  <p>5</p>
  <p>6</p>
  <p>7</p>
  <p>8</p>
  <p>9</p>
  <p>10</p>
</div>

 

pタグを指定した場合

今度はpタグをそれぞれの方法で指定してみます。

.box p:first-child {
  color: red;
}

.box p:first-of-type {
  color: red;
}

先ほどのspanタグが分かれば今回は予想出来ると思います。

See the Pen
CSSの要素指定( p)
by junpei (@junpei-sugiyama)
on CodePen.

:first-childの方はspanタグ同様効いていません。

そして:first-of-type兄弟要素の中の指定した要素の最初の要素はpタグなので、ここでは5にスタイルが適用されています。



最後の要素を指定する擬似クラス『:last-child』と『:last-of-type』も考え方は同じ

先ほどまでは最初の要素を指定する方法について書きましたが、同じように最後の要素を指定する擬似クラスもあります。

先ほどの:first-childは兄弟要素の最初の要素なのでh2タグ(数字の1)を指していましたが、今回の:last-childは兄弟要素の最後の要素なのでpタグの最後(数字の10)を指します。

これも考え方は先ほどまでと同じなので、デモだけ見てみましょう。

 

h2タグを指定した場合

.box h2:last-child {
  color: red;
}

.box h2:last-of-type {
  color: red;
}

See the Pen
CSSの最後の要素指定( h2タグ)
by junpei (@junpei-sugiyama)
on CodePen.

 

spanタグを指定した場合

.box span:last-child {
  color: red;
}

.box span:last-of-type {
  color: red;
}

See the Pen
CSSの最後の要素指定( spanタグ)
by junpei (@junpei-sugiyama)
on CodePen.

 

pタグを指定した場合

.box p:last-child {
  color: red;
}

.box p:last-of-type {
  color: red;
}

See the Pen
by junpei (@junpei-sugiyama)
on CodePen.

まとめ

今回は擬似クラス『:first-child』と『:first-of-type』の違いを解説しました。

擬似クラスは似てますが明確な違いがあるので、もし使い方に迷ったらこの記事を参考にしてみて下さい。

以上になります。

 

Web制作おすすめ教材と案件獲得サービス
当ブログではWeb制作学習におすすめの教材を厳選してご紹介しています。
こちらの記事を参考に教材を購入して成果を出している人もたくさんいるので、自分に必要な教材を探してみて下さい。
また、学習面だけでなく営業面である案件獲得サービスもご紹介しています。
スキルが身についても仕事がなければ意味がないので、営業に不安がある人はこちらの記事をぜひ参考にしてみて下さい。
この記事を参考にスキルと営業力を身につけて稼げるようになりましょう!

-CSS, Web制作