2012-02-20 86 views
0

根據選擇器中的子元素(h1),我必須將一個邊距設置爲<p>。事情是這樣的:爲什麼:not(> h1)不可能?純CSS中的任何解決方法?

selector:not(>h1) + p 
{ 
    margin: 10px 0 0 0; 
} 

HTML:

<a><h1>test</h1></a> 
<p>test</p> 

<a>是我的選擇,它(或以下P)應該得到一個利潤率只有當一個包含<h1>。並且不可能將餘量設置爲h1。

這沒有奏效:有沒有辦法在純CSS中做到這一點? 我認爲這是CSS3選擇器中的一個缺失的東西。

+2

你究竟想要做什麼? '選擇器:不(> h1)'沒有任何意義。你是什​​麼意思,「根據選擇器的子元素選擇器後的選擇器之後的p?」? – BoltClock 2012-02-20 16:55:12

+1

什麼是HTML結構? – 2012-02-20 16:57:25

+0

我猜你想要選擇所有(不)具有H1子元素的元素。 CSS中不存在這樣的選擇器。 (jQuery有':has()',所以你可以寫'$('a:not(:has(h1))+ p')') – 2012-02-20 17:02:41

回答

1

絕對沒有辦法制作不使用jQuery的選擇工作「:有」,而在這種情況下,我會寫這個查詢:

$('selector > p:not(selector > p:has(h1))'); 

如果嵌套函數即使在jQuery的

工作爲什麼CSS不能工作的原因是因爲有no:有功能,並且:包含depricated。

1

你的問題/例子不太清楚恐怕聽起來像你正在描述一個'父'選擇器,而CSS目前只適用於兒童/後代。我相信有一個父母選擇工作正在進行中,但在那之前恐怕不可能。

如果我正確理解你,聽起來像你講的東西像http://www.shauninman.com/archive/2008/05/05/css_qualified_selectors

^h

編輯:

同樣,我真的不能告訴你是什麼之後,但也可以嘗試這樣的:

<h1><a></a></h1> 

h1 a{ 
    display:block 
    margin-bottom:20px; /* Adjust as necessary */ 
} 
h1 + p{ 
    margin-top:-20px; /* Same as above */ 
} 
+0

謝謝我更談論類似於css:has()選擇器讓css做類似的事情。selector:has(h1)> p。jQuery有這樣一個選擇器:http://api.jquery.com/has-selector/。謝謝你的回答 – lhwparis 2012-02-21 10:36:34

相關問題