2011-06-26 17 views
0

は、HTMLは次のようになります。CSS隣接セレクタ問題

<div id="content_wide"> 
<div class="photo-center borderless"><img src="http://example.com/travel-path-map.png" alt="" title="" /></div> 

...しかし、何らかの理由で私はこのような写真中央のdivのターゲットに見えることはできません。興味深いことに

#content_wide + .photo-center { margin-top:10px } 

を十分な場合、より一般的な子セレクタが動作します:

#content_wide > .photo-center { margin-top:10px } 

思考?

答えて

6

DIVのでID content_wide子セレクタ(>)作品でDIV内にあります。これと同様の隣接セレクタ(+)彼らはお互いの隣にいた場合にのみ動作します:あなたの投稿をコードで

<div id="content_wide"><!-- content --></div> 
<div class="photo-center borderless"><!-- more content --></iv> 
+0

ああ!はい。脳は今日は少し遅いです。それがcontent_wideの最初の子孫である場合のみ、写真中心をターゲットにする方法はありますか? – Craig

+1

'#content_wide .photo-center:first-child'は、最初の子であれば' .photo-center'のみをターゲットにする必要があります。 –

+0

Perfect。ありがとう、ジェームス – Craig

2

あなたは.photo-center#content_wideの隣接兄弟ではないので、それが直接の子孫(子)ですので、あなたは、子セレクタ>を使用することができます+を使用することはできません。 adjacent sibling selectors用Mozillaのドキュメントによれば

+コンビネータは、二つ セレクタを分離し、それが最初の直後 場合にのみ第二 要素と一致します。

child selector documentationは言う:

を>コンビネータは2つの のセレクタを分離し、それが最初の直接の子 である場合にのみ、第二 要素と一致します。ここ

上記セレクタのjsFiddleデモで、クラスphoto-centerhttp://jsfiddle.net/YcHKm/1/

+0

49秒でビートします。 – Brent

+0

@Daveはチップをありがとう。 –

+0

ここではたくさん起こる@Brent、人々はいつも秒ずっと拍手する;) –

2

は、.photo-center#content_wideの子、兄弟ではないです。

+は兄弟セレクタであり、>は子セレクタです。

要素が兄弟でないため、兄弟セレクタが機能しません。

0

これは、.photo-centerが隣接していないためです。content_wideです。それはcontent_wideの子です。ここ

隣接するタグの例です。この例では

<h1>Test</h1> 
<h2>Test</h2> 

、H2はH1に隣接しています。この方法では、+セレクタが機能するはずです。

関連する問題