2011-01-07 75 views
82

我有以下的HTML代碼的頁面CSS如何將其他元素

<h4>Some text</h4> 
<p> 
Some more text! 
</p> 

上。在我的CSS我有以下選擇樣式的H4元素後選擇第一個出現的元素。上面的HTML代碼是整個代碼的只是一小部分,還有幾個div的多纏屬於太極拳

#sb-wrapper #sb-wrapper-inner #sb-body #myDiv h4 
{ 
    color    : #614E43; 
    margin-top   : 5px; 
    margin-left   : 6px; 
} 

所以,我對於我的H4元素正確的風格,但我也想樣式化段落標記在我的HTML。這可能與CSS選擇器?如果是的話,我該怎麼做?

回答

161
#many .more.selectors h4 + p { ... } 

這叫做adjacent sibling selector

+2

但請注意一些IE錯誤,請參閱http://www.quirksmode.org/css/contents.html – Willem 2011-01-07 09:09:58

+1

另一種方法是使用JS查找您的`h4`元素,步行到下一個兄弟並添加一個CSS上課。有了jQuery,這可以簡單地寫成:$('#sb-wrapper#sb-wrapper-inner#sb-body #myDiv h4')。next()。addClass('shadowbox-h4-p');` – Phrogz 2011-01-07 14:10:10

10

試圖解決這種類型的事情時,我只是打這個我自己。

我做了一個選擇器,它處理的是非p之外的元素。

.here .is.the #selector h4 + * {...} 

希望這有助於任何人誰發現它:)

17

爲了您的文字比如你想使用相鄰選擇器(+)。

h4 + p {color:red}//any <p> that is immediately preceded by an <h4> 

<h4>Some text</h4> 
<p>I'm red</p> 
<p>I'm not</p> 

但是,如果你想選擇所有連續的段落,你需要使用一般的兄弟選擇符(〜)。

h4 ~ p {color:red}//any <p> that has the same parent as, and comes after an <h4> 

<h4>Some text</h4> 
<p>I'm red</p> 
<p>I am too</p> 

It's known to be buggy in IE 7+ unfortunately