2011-06-26 143 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

與類photo-center股利是DIV中與ID content_wide所以孩子選擇器(>)的作品。相鄰的選擇(+)如果他們彼此相鄰,類似這樣只會工作:

<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' should should target'.photo-center' if if it's first child –

+0

完美。謝謝你,詹姆斯 – Craig

2

不能使用+因爲.photo-center不是#content_wide相鄰的兄弟,這是一個直接後裔(孩子),所以你可以使用子選擇>

根據Mozilla的文檔爲adjacent sibling selectors

的+組合子分隔兩個 選擇器和所述第二 元素相匹配,只有當它是立即以下 第一個。

child selector documentation說:

的>組合子分隔兩個 選擇且僅當它是第一個直接子 第二 元素相匹配。

這裏是上述選擇的演示的jsfiddle,http://jsfiddle.net/YcHKm/1/

+0

擊敗我49秒。 – Brent

+0

@Dave感謝您的提示。 – 2011-06-26 22:29:22

+0

@布倫特在這裏發生了很多事情,人們一直以秒數打敗我;) – 2011-06-26 22:45:48

2

在您發佈的代碼,.photo-center#content_wide一個孩子,而不是一個兄弟姐妹。

+是兄弟選擇器,而>是子選擇器。

兄弟姐妹選擇器不工作,因爲元素不是兄弟姐妹。

0

這是因爲.photo-center不相鄰content_wide。它是content_wide的子女。

這裏是鄰近標籤的一個示例:

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

在本例中,H 2是相鄰的H1。這樣,+選擇器應該工作。