CSS的nth-child使用方法


當我想要完美的使用:nth-child或者:nth-of-type的時候有點兒頭暈。你越理解它們,就能寫出越好的CSS規則!

在這些簡單的”秘方”(實際上是表達式)中我將重復的使用一個簡單的列表並隨即選擇數字。但是很明顯很容易改變它們以獲得類似的選擇器。

:nth-child規定屬於其父元素的第二個子元素的每個 p 的背景色:

p:nth-child(2)
{
background:#ff0000;
}

只選擇第五個元素

li:nth-child(5){
 color: green;
}

要選擇第一個元素,你可以使用:first-child,或者我相信你也可以改下上面的例子來實現。

選擇除了前面的五個之外的所有元素

 

 

 

如果有超過10個元素,它將會選中超過5個。

只選擇前面的5個

 

li:nth-child(-n+5){
 color: green;
}

 

從開始的那個,選擇每第四個

 

 li:nth-child(4n-7) {
 /* or 4n+1 */
 color: green;
}

 

選擇奇數或者偶數

 

 li:nth-child(odd){
 color: green;
}
 

 li:nth-child(even){
 color: green;
}

 

當然這里也有另外兩種實現,你懂的——神飛

選擇最后一個元素

 

 li:last-child {
 color: green;
}

 

選擇倒數第二個

 

 li:nth-last-child(2){
 color: green;
}

 

從這個例子可看出,上面那個例子也有第二種實現方法。

瀏覽器支持

有趣的是,:first-child 和:last-child被IE 7支持,但是知道IE9才支持剩下的選擇器。如果你擔心IE,可以使用Selectivizr。

 

下面介紹的是 nth-child() 的語法和用法:語法: :nth-child(an+b) 描述:偽類:nth-child()的參數是an+b

舉例用法

tr:nth-child(2n+1)

tr:nth-child(odd)

tr:nth-child(2n)

tr:nth-child(even)

 

第一種:簡單數字序號寫法
:nth-child(number)
直接匹配第number個元素。參數number必須為大於0的整數。
例子:
li:nth-child(3){background:orange;}

第二種:倍數寫法
:nth-child(an)
匹配所有倍數為a的元素。其中參數an中的字母n不可缺省,它是倍數寫法的標志,如3n、5n。
例子:
li:nth-child(3n){background:orange;}

第三種:倍數分組匹配
:nth-child(an+b) 與 :nth-child(an-b)
先對元素進行分組,每組有a個,b為組內成員的序號,其中字母n和加號+不可缺省,位置不可調換,這是該寫法的標志,其中a,b均為正整數或0。如3n+1、5n+1。但加號可以變為負號,此時匹配組內的第a-b個。
例子:
li:nth-child(3n+1){background:orange;}
li:nth-child(3n+5){background:orange;}
li:nth-child(5n-1){background:orange;}
li:nth-child(3n±0){background:orange;}
li:nth-child(±0n+3){background:orange;}

第四種:反向倍數分組匹配
:nth-child(-an+b)
此處一負一正,均不可缺省,否則無意義。這時與:nth-child(an+1)相似,都是匹配第1個,但不同的是它是倒着算的,從第b個開始往回算,所以它所匹配的最多也不會超過b個。
例子:
li:nth-child(-3n+8){background:orange;}
li:nth-child(-1n+8){background:orange;}

第五種:奇偶匹配
:nth-child(odd) 與 :nth-child(even)
分別匹配序號為奇數與偶數的元素。奇數(odd)與(2n+1)結果一樣;偶數(even)與(2n+0)及(2n)結果一樣。

 

衍生偽類

•E:nth-last-child(n): 選擇某個子元素,從最后一個數起

•E:nth-of-type(n): 選擇某個某種類型的子元素

•E:nth-last-of-type(n): 選擇某個某種類型的子元素,從最后一個符合條件的元素數起

•E:first-child: 選擇第一個子元素(這個偽類在CSS2里就有)

•E:last-child: 選擇最后一個子元素

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM