n番目の要素を選ぶ :nth-childと:nth-of-type、
 似ていますがちがいはどこにあるのでしょうか?
今回はCSSの2つの擬似クラス
 :nth-childと:nth-of-typeのちがいをまとめてみたいと思います。
nth-childとnth-of-typeのちがい
MDNでの定義
まずMDN web docsに掲載されている、それぞれの説明を比較してみたいと思います。
CSS の
:nth-child()擬似クラスは、兄弟要素のグループの中での位置に基づいて選択します。
CSS の
:nth-of-type()疑似クラスは、兄弟要素のグループの中で指定された型の要素を、位置に基づいて選択します。
内容は似ていますが、
 定義が異なる「指定された型の要素を」というところがポイントになりそうですね。

それぞれの特徴
上記を踏まえて、このようにまとめられるのではないかと思います。
- nth-child:
 兄弟要素であれば、指定した特定の要素以外でもカウントの対象になってしまう。
- nth-of-type:
 兄弟要素の中でも指定した特定の要素しかカウントせず、異なる要素はカウントの対象外となる
では具体例を用いて比較してみましょう。
具体例で比較してみよう
下記のデモを作ってみました。
h2タグで「nth-childとnth-of-typeのちがい」
 続いてpタグで「○つめのパラグラフ」と5回続いています。
h2タグとpタグは兄弟要素で、またdivタグの子要素となっています。
この状態で、p:nth-child(2)とp:nth-of-type(2)とどちらも2番目を指定した場合、
 どの要素が当てはまるのでしょうか。
See the Pen 
 eYpoKRr by notebook (@orange-notebook)
 on CodePen.
答えは、p:nth-child(2)→黄色いハイライトの「1つめのパラグラフ」、
 p:nth-of-type(2)→オレンジのハイライトの「2つめのパラグラフ」となりました。
どうしてでしょうか?
まずp:nth-child(2)ですが、nth-childはpと指定した要素と異なる要素でもカウントの対象になるので、h2からカウントが始まります。
そのため、h2がnth-childの1番目、次の1つ目のpタグ「1つめのパラグラフ」が2番目となります。
一方p:nth-of-typeは、指定しているpタグの順番でカウントするので、
 h2タグが兄弟要素の中では1番はじめにあっても飛ばされます。
そのため「1つめのパラグラフ」がnth-of-typeの1番目、「2つめのパラグラフ」が2番目となります。
以上、:nth-childと:nth-of-typeの2つのちがいについてでした。

 
  
  
  
  
  
  
 

![【CSSセレクター】自在に使いこなそう【> + ~[]】](https://orange-log.com/wp-content/uploads/2020/03/css-selector_ic-640x360.jpg)









