選取符合偽類別an+b
規則的元素an+b
中的n
為系統自動抓取值,無法人為控制,而a
與b
則為數字
使用範例說明會更加簡單
div p:nth-child(3)
HTML
<div>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
</div>
<div>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
</div>
div p:nth-child(3) {
color: red;
}
說明
當
:nth-child(an+b)
我們只給單一數字b
做為參數時,代表只會抓取第b
個元素
選擇器 div p
將會抓到範例中兩個div
的所有p
元素
接著套用偽類別:nth-child(3)
抓取其中第三個p
元素
因此兩個div
元素中的第三個p
元素的文字顏色都將變為紅色
div p:nth-child(2n)
HTML
<div>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
</div>
<hr>
<div>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
</div>
CSS
div p:nth-child(2n) {
color: red;
}
說明
當
:nth-child(an+b)
我們只給an
做為參數時,代表只會抓取第a * n
個元素
選擇器 div p
將會抓到範例中兩個div
的所有p
元素
接著套用偽類別:nth-child(2n)
抓取其中符合2n
元素
因此兩個div
元素中的第2*0
、2*1
、2*2
、2*3
的p
元素的文字顏色都將變為紅色
而由於2*0 = 0
因此只會看到第2, 4, 6
個p
元素變色。
ol li:nth-child(3n+1)
HTML
<ol>
<li>Hello CSS3</li>
<li>Hello CSS3</li>
<li>Hello CSS3</li>
<li>Hello CSS3</li>
<li>Hello CSS3</li>
<li>Hello CSS3</li>
<li>Hello CSS3</li>
<li>Hello CSS3</li>
<li>Hello CSS3</li>
<li>Hello CSS3</li>
<li>Hello CSS3</li>
</ol>
CSS
ol li:nth-child(3n+1) {
color: red;
}
說明
選擇器 ol li
將會抓到範例中ol
的所有li
元素
接著套用偽類別:nth-child(3n+1)
抓取其中第3n+1
個li
元素
因此ol
元素中第3*0+1
、3*1+1
、3*2+1
、3*3+1
.. 的li
元素的文字顏色都將變為紅色
div p:nth-child(3n+1)
HTML
<div>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<h5>Hello CSS3</h5>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
<p>Hello CSS3</p>
</div>
CSS
h5 {
color:blue;
}
div p:nth-child(3n+1) {
color: red;
}
說明
我們設定第3n+1
個p
元素要變為紅色,但此時第4個元素剛好不是p
元素時
這時的h5
當然會式樣是設定中所定義的藍色,但該h5
依然屬於an+b
中的一個n
因此下一個變為紅色的p
元素依然是子元素中的第7個元素p
而不是第8個元素p
。
偽類別:nth-child(an+b)
給了我們很大的彈性去選取集合中的元素
在實務上是非常常見的,因此在此花了較多的篇幅來介紹它
希望能給還沒使用:nth-child(an+b)
的朋友有所啟發