2012-10-14 65 views
1

我有以下代碼:如何做:n-child工作?

div:nth-child(1) { 
 
    background-color: red; 
 
}
<h1>Boxes</h1> 
 
<div>1</div> 
 
<div>2</div> 
 
<div>3</div> 
 
<div>4</div> 
 
<div>5</div> 
 
<div>6</div> 
 
<div>7</div> 
 
<div>8</div> 
 
<div>9</div>

我預計div1st要選擇的內容,但事實並非如此。但是,如果我刪除h1元素,則它按預期工作。爲什麼?

回答

4

你遇到的問題是選擇器本身::nth-child();這找到了它所附的元素,它是其父項的第n個孩子的div

當你選擇:

div:nth-child(1) { 
/*...*/ 
} 

這將不會匹配任何內容;因爲h1元素是共享父級的第一個孩子/ :nth-child(1)

適應,你需要使用兩種:

div:nth-child(2) { 
    background-color: red; 
} 

JS Fiddle demo

或者創建一個新父項來包含div元素。

<h1>Boxes</h1> 
<div> 
    <div>1</div> 
    <div>2</div> 
    <div>3</div> 
    <div>4</div> 
    <div>5</div> 
    <div>6</div> 
    <div>7</div> 
    <div>8</div> 
    <div>9</div> 
</div> 

JS Fiddle demo

在支持的瀏覽器,你也可以使用:nth-of-type(1)

div:nth-of-type(1) { 
    background-color: red; 
}​ 

JS Fiddle demo

參考文獻:

+0

好的如果我不確定兄弟姐妹,我只是想讓':nth-​​child'在'div'上工作而忽略其他人? –

+0

查看更新後的答案':nth-​​of-type()'可能是你的朋友(但其實現/兼容性是可變的) –

+0

嚴重嗎? A * downvote *的正確答案? –