2010-03-23 168 views
1

我有以下選擇:調試第n個孩子選擇

.progress:nth-child(3n+1) { 
    background: teal; 
} 

.progress:nth-child(3n+2) { 
    background: red; 
} 

.progress:nth-child(3n+3) { 
    background: blue; 
} 

但是所有項目的結束與一個水鴨背景。這些選擇器是否正確?我想我應該得到:

  1. 蒂爾(每3,從1開始)
  2. 紅(每3,從2)
  3. 藍(每3,從3) 等。

我已經在Ubuntu上測試了Firefox 3.5.8和Opera 10.10。除了CSS中的這些規則之外,也進行了測試。我使用YUI重置樣式表,但不包括它什麼都不做。

+0

您可以發佈您定位的HTML嗎? – DisgruntledGoat 2010-03-23 21:18:43

回答

4

你的CSS似乎是正確的,假設下面的HTML:

<div class="progress">1</div> 
<div class="progress">2</div> 
<div class="progress">3</div> 

也許你誤解的:nth-child的意義,和你的HTML/CSS的組合不正確。

foo:nth-child並不意味着「所有的元素是foo的的ñ個孩子」,而是「每ñfoo元素」。

專業提示:使用the :nth-child() tester。或者這一個:http://leaverou.me/demos/nth.html

+0

那麼他們在那裏工作,任何想法爲什麼不在我的網頁? – Ross 2010-03-23 21:15:41

+1

發佈您的網頁。 – Catfish 2010-03-23 21:18:21

+0

@Ross:就像我說的,你的HTML可能有問題。這是上面例子的一個工作演示:http://jsfiddle.net/mathias/cKr67/ – 2010-03-23 21:18:24

2

我猜每個.progress實際上是元素的第一個孩子。舉個例子來說,所有.progress元素必須是兄弟姐妹。

即這將工作:

<div class="progress">1</div> 
<div class="progress">2</div> 
<div class="progress">3</div> 

...但這不會:

<div><span class="progress">1</span></div> 
<div><span class="progress">2</span></div> 
<div><span class="progress">3</span></div> 

在這種情況下,你需要將progress類移動到<div>然後用這個CSS:

.progress:nth-child(3n+1) span { 
    background: teal; 
}