2013-04-16 49 views
0

有沒有什麼辦法可以使用CSS來設置一個元素的風格,如果它的兄弟的子類的子類?還是其父母的兄弟姐妹的孩子?是否有一個CSS'兄弟包含'選擇器?

例如,說我有這個表:

<table> 
    <tr><td><span class='red'>A</span></td><td><span class='blue'>B</span></td></tr> 
    <tr><td><span class='red'>C</span></td><td><span class='red'>D</span></td></tr> 
</table> 

我想選擇其中有一類「紅色」的任何SPAN,但只有當相鄰(在同一行)TD元素包含一個與班級「藍色」跨度。所以,它會影響細胞A,但不影響細胞C.這可能嗎?根據其兄弟姐妹的屬性,我可以選擇最接近的元素是什麼?

回答

1

有一個CSS'兄弟'包含'選擇器?

CSS中沒有'contains'或父選擇器,所以又沒有'兄弟含有'或'兄弟是'選擇器的父親。

我想選擇其中有一類「紅色」的任何SPAN,但只有當相鄰(在同一行)TD元素包含與類「藍色」的跨度。所以,它會影響細胞A,但不影響細胞C.這可能嗎?根據其兄弟姐妹的屬性,我可以選擇最接近的元素是什麼?

同胞組合器只允許您使用已經可用的內容(例如ID,類,僞類和屬性)在同一級別基於同級元素匹配元素。

在你的情況下,你的span元素根本不是彼此的兄弟姐妹,但他們的父母td是。但由於沒有上述的父母選擇器,因此您不能根據其兄弟的孩子選擇第一個td的孩子。所以,用你目前的標記,不可能僅僅使用CSS。

0

有相鄰的(+)和一般的(~)兄弟選擇器,但仍然不會用你當前的標記來幫助你,正如@BoltClock所解釋的。但是,如果您將標記更改爲:

<table> 
    <tr><td class="red><span>A</span></td><td class="blue"><span>B</span></td></tr> 
</table> 

即,移動你的類到<td>!而非的<span>是你應該有更多的運氣:

td.red + td.blue會選擇遵循一個td.red元素中的所有元素td.blue