2009-08-09 129 views
9

可能重複:
Is there a CSS parent selector?CSS父/祖先選擇

我知道這是一個在黑暗中拍攝,但有什麼辦法,只能用css,CSS2,沒有的jQuery ,沒有JavaScript,選擇和樣式元素的祖先?我已經通過了選擇器,但是我發佈了這些信息以防我錯過了某些東西或者有一個聰明的解決方法。

例如,假設我有一個嵌套在div中的類名爲「test」的表。是否有某種:

<div> 
    <table class="test"> 
    </table> 
</div> 
div (with child) .test 
{ 
    /*styling, for div, not .test ...*/ 
} 
+0

添加類到包含div有一些問題嗎? – rossipedia 2010-07-01 23:07:40

回答

9

有在CSS2或CSS3選擇器父母沒有這樣的事情。實際上,可能從來沒有,因爲一旦你開始做父母選擇器,CSS的整個「級聯」部分不會很好處理。

這就是jQuery的是:-)

+8

jQuery和JavaScript通常用於添加用戶界面功能;不用於指定任何樣式。由於CSS的缺點,jQuery和JavaScript被用於風格,但不是爲了這個目的。 – Scharrels 2009-08-09 17:19:45

+10

首先,在那句話後有一個笑臉。其次,我不同意。能夠通過CSS指定所有的表現方面會更好嗎?當然。可能嗎?不,jQuery是一個非常出色的工具,可以讓你豐富用戶的體驗 - 如果這包括設置一種無法以一致的方式設置的樣式,那麼這就是我要做的。 – ChssPly76 2009-08-09 17:26:57

+2

-1對於jQuery,其中OP可以求助於vanilla JS。 – PeeHaa 2012-06-23 21:10:33

6

在CSS中有一個:空選擇,讓您匹配空元素,你可以否定與效果:沒有選擇。

div:not(:empty) { 
    // your styles here 
} 

但是我不確定是否所有的瀏覽器都支持這個功能。

2
div:not(:empty) { 
    margin:0; 
} 

不是由http://jigsaw.w3.org/css-validator/公認CSS2

它的CSS的「級聯」的宗旨,從更包含到更具體的因素了。我想這可能爲你「扭轉你的邏輯」,就像在

div.myclass { /* format parent */ } 
div.myclass * { /* neutralize formats in descendants */} 
div.myclass img { /* more specific formats for img children */ } 

好運 邁克

+0

這不能改變父母的格式,取決於它所具有的後代,這是OP所要求的。 – ChrisW 2011-02-20 14:56:31