一定會用到的選取器。
簡單說明
簡單來說就是「選到同一階層中的第 n 個」,例如說選奇數個:
1 | <div class="wrapper"> |
CSS:
1 | .wrapper div:nth-child(odd) { |
結果:
常犯的錯誤
假設有段 HTML 長這樣:
1 | <div class="wrapper"> |
如果你想選第二個 .bg-red
,你可能會這樣寫:
1 | .wrapper .bg-red:nth-child(even) { |
乍看之下意思好像是「選 .wrapper
下面偶數個 .bg-red
」,但是不是這樣。
其實正確的順序是「先選到 .wrapper
底下的 nth-child(even)
元素」,接著才從這裡面找出有 .bg-red
class 的元素。
拿剛剛的例子來說就是:
1 | <div class="wrapper"> |
nth-child(2) 的 div
並沒有 .bg-red
的 class,所以不會被選到,而第二個 .bg-red
實際上是 nth-child(3)
,所以也不會被選到。
因此在看這種 selector 的時候,建議 「從後面往前看」,先看後面的 nth-child
,在看前面的 class 名稱,會比較好理解一點。
nth-child(an+b)
把 n
想成是你在寫迴圈的那個 i
,它會從 0, 1, 2, … 一直跑。另外 a
跟 b
是一個常數,不填的話預設為 0。
所以可以這樣用:
1 | .wrapper div:nth-child(0n+3) => 選到第 3 個 div |