2014-01-21 42 views
50

我試圖將styles應用於parent如果它具有child元素。將樣式應用於父項,如果它具有css子項

到目前爲止,我已將樣式應用於child元素(如果存在)。但我想要styleparent如果parentchild,只使用CSS

以下是html

<ul class="main"> 
    <li>aaaa</li> 
    <li>aaaa</li> 
    <li>aaaa</li> 
    <li>aaaa</li> 
    <li>aaaa 
     <ul class="sub"> 
      <li>bbbb</li> 
      <li>bbbb 
       <ul> 
        <li>cccc</li> 
        <li>cccc</li> 
        <li>cccc</li> 
       </ul> 
      </li> 
      <li>bbbb</li> 
      <li>bbbb</li> 
      <li>bbbb</li> 
     </ul> 
    </li> 
    <li>aaaa</li> 
    <li>aaaa</li> 
    <li>aaaa</li> 
</ul> 

css代碼

* { 
    margin:0; 
    padding:0; 
    text-decoration:none; 
} 
.main li { 
    display:inline-block; 
    background:yellow; 
    color:green; 
} 
.main > li > ul > li { 
    background:orange 
} 
.main > li > ul > li > ul >li { 
    background:pink; 
} 

工作FIDDLE

+4

你不能。抨擊規格製造商。 – bjb568

+2

請參閱http://stackoverflow.com/questions/45004/complex-css-selector-for-parent-of-active-child或http://stackoverflow.com/questions/1014861/is-there-a-css-父母選擇器 –

+0

這是不可能的,使用jQuery。 – nidzix

回答

48

這是不可能用CSS3。有一個建議CSS4選擇,$,要做到這一點,這可能是這樣的(選擇li元素):

ul $li ul.sub { ... } 

list of CSS4 Selectors here

作爲替代,使用jQuery,一行代碼,你可以利用的是這樣的:

$('ul li:has(ul.sub)').addClass('has_sub'); 

然後,您可以繼續前進,風格li.has_sub在你的CSS。

+2

根據這個類似的問題:http://stackoverflow.com/questions/1014861/is-there-a-css-parent-selector:has()僞類不再適用於任何瀏覽器截至2016年。不會因此失敗而沮喪。 –

+0

有什麼發展? – SuperUberDuper

+8

:has()應該是提議的CSS4選擇器,而不是更隱蔽的$ 1 ... –

相關問題