似曾相似?
比 nth-child 更嚴謹一點
這個跟 :nth-child() 差不多,差別在於它會「按照標籤來分組」:
1 | <div class="wrapper"> |
如果想對第奇數個 <p> 做設定:
1 | .wrapper p:nth-of-type(odd) { |

輕輕鬆鬆搞定!
常犯的錯誤
但如果這時候你改用 nth-child(),結果會跟你想的不太一樣:
1 | .wrapper p:nth-child(odd) { |
結果:

這是因為 nth-child 會以「同階層」的元素來做排序,像這樣:
1 | <div class="wrapper"> |
所以實際上會先選到第奇數個元素,接著才看是不是 <p>。(可以參考 這裡 的解釋)
至於 nth-of-type() 可以像成是這樣:
1 | <div class="wrapper"> |
所以一定要搞清楚它們兩個的差別。