nth-child

親要素内のすべての子要素に対して適用され、その中から条件に一致する要素が選択される。 そのため要素の種類に関係なく、すべての子要素が考慮される。

nth-of-type

親要素内の特定の要素タイプ(タグ名)に対して適用され、その中から条件に一致する要素が選択される。 そのため要素の種類に基づいて選択がされる。

具体例

例えば以下のコードがあった時、

<div class="example">
  <div>Item 1</div>
  <p>Item 2</p>
  <div>Item 3</div>
  <p>Item 4</p>
  <div>Item 5</div>
</div>

nth-child

.example div:nth-child(3) {
  color: red;
}

この場合、.example内の直下のdiv要素の中から、3番目の要素(“Item 3”)が赤くなる。

nth-of-type

.example div:nth-of-type(3) {
  color: blue;
}

この場合、.example内の直下のdiv要素の中から、同じ種類の要素の中で3番目の要素(“Item 5”)が青くなる。