2012-02-24 83 views
0

我開發一個CSS在IE8打印,因爲我沒有高級CSS選擇器(http://net.tutsplus.com/tutorials/html-css-techniques/the-30-css-selectors-you-must-memorize/)我將它們連接起來像這樣解釋這個CSS,請

我需要modifiy表中的某些列(例如,使8列紅,第九屆更長,更短的10 ... ECC)

的問題是,如果我使用

td+td+td{ /*instead of td:nth-child(3) on modern browsers*/ 
set something... 
} 

所有TD從3一到最後一個有「設置someth荷蘭國際集團」

所以要解決這個問題我必須做

td+td+td+td{ 
unset something 
} 

所以我固定的,但不知道爲什麼它的作用也是這樣嗎?

回答

1

+表示相鄰的選擇器。

td+td { }通常意味着,如果一個td被另一個td前面然後應用一定的規則

再舉一個例子:

a + p {}通常意味着,如果p自帶後a然後應用一定的規則。

所以,你正在使用

td+td+td樣式表將在第三元素後的樣式應用到每個td這可能有點複雜,要清楚。讓我們看看與套<td>

<td>1</td> 
<td>2</td> 
<td>3</td> 
<td>4</td> 

你的規則的示例

td + td + td { 
    /* apply something */ 
} 

上述規則將適用於兩組不同

  1. 首先之一,從<td>1</td>相鄰同級<td>3</td>匹配td+td+td

  2. 第二個,從<td>2</td><td>4</td>比賽td+td+td

所以相鄰的兄弟,所有的選擇從<td>3</td>最終得到的風格

要取消這個效果,你重置該規則在樣式表上添加第四個選擇器。 即

td + td+ td + td { 
    /* cancel the effect 
    This will catch <td>-4</td> and apply the reset rule */ 
} 

希望能解釋它。


進一步閱讀

  1. W3 Org
  2. Good Explanation with examples
  3. One more to fully clarify
2

爲什麼不直接在列上放置類名並直接對其進行設置?它消除了多版本黑客。

+1

這是很好的建議,但它回答這個問題? – 2012-02-24 14:59:39

1

a + b意思是:「選擇b,如果它前面有a」。
td+td+td表示:如果前面有2 <td> s,則選擇td

(見圖)
Xtd+td+td選擇。
每個td+td+td+td選定。
要選擇第三個同胞,兩個選擇器必須合併。

<td> 1  1      = default 
<td> 2 1  2 1     = default 
<td> X 2 1 3 2 1 <--- X  = style X 
<td> X 2 1 Y 3 2 <--- X and Y = style X, but reset to default by Y 
<td>  X 2 Y 3 <--- X and Y = style X, but reset to default by Y 
<td>  X  Y <--- X and Y = style X, but reset to default by Y 
+0

對不起,沒有理解圖片 – max4ever 2012-02-24 15:09:23

+0

@ max4ever這些數字表明,每個由X標記的元素都有2個兄弟姐妹,並且每個標有Y的元素都有3個兄弟姐妹。在右側,我標出了選擇器的結果。現在,你瞭解這張照片嗎? – 2012-02-24 15:12:47