2012-04-19 58 views
-2

不知道標題是有點含糊不清或沒有,css的子選擇:第一胎,但選擇有針對性的選擇所有兒童

但是,假設你有..

.topactive a:focus, .topactive a:hover, 
.sf-menu a:active:first-child, .sf-menu li.sfHover:first-child { 
} 

和在你的html中你看:

所有的ul和li類聲明;

<ul class="sf-menu"> 
<li class="current"> 
<p class="topactive"><a href="#a">About Us</a></p> 
     <ul class="menu2"><li>submenu</li></ul></li> 
    <li>something</li> 
     <ul><li>submenu</li></ul> 
</ul> 

我需要它只針對最左邊的li。

css是否只選擇「示例」,就像我當前的代碼一樣,並且我不能僅顯式選擇第一級ul,它只能選擇第一個ul實例。

我希望這是有道理的,抱歉有任何含糊之處,並感謝那些幫助我解決其他問題的人。

+1

我讀了三次,但沒有得到你想要或面對的東西。 – gdoron 2012-04-19 12:17:12

+0

哈哈,對我來說也一樣! – sp00m 2012-04-19 12:18:35

+0

哎呀抱歉!如果有意義的話,我需要css來定位li的第一個層次?沒有什麼超越ul li,但每一個第一級李。我已更新我的操作。 – zomboble 2012-04-19 12:20:24

回答

2

要僅選擇頂級ul的一級子女,您需要一些方法來顯式引用祖先和距祖先的距離。我建議使用id

#idOfTopMostUL > li { 
    /* CSS for the first-level li-elements */ 
} 
#idOfTopMostUL ul li { 
    /* CSS for other li elements, that are children of ul elements within the ul */ 
} 

這就需要HTML如:

<ul id="idOfTopMostUL"> 
    <li>example 
     <ul><li>submenu</li></ul></li> 
    <li>something 
     <ul><li>submenu</li></ul></li> 
</ul> 

JS Fiddle demo

請注意,我已更正您的HTML(一個ul不能是另一個ul(或ol)的直接子)。

如果你不想或者不能,讓你的ulid你可以引用另一個祖先ul之外(因爲第一級li元素會比nested- li更接近祖先S):

<div id="parentDiv"> 
    <ul> 
     <li>example 
      <ul><li>submenu</li></ul></li> 
     <li>something 
      <ul><li>submenu</li></ul></li> 
    </ul> 
</div> 

和CSS:

#parentDiv > ul > li { 
    /* CSS for the first-level li-elements */ 
} 
#parentDiv ul ul li, 
#parentDiv ul li ul li { 
    /* CSS for other li elements, that are children of ul elements within the ul */ 
} 

JS Fiddle demo

+0

謝謝,我會接受這個,當我可以,這種方法使用>很好地工作謝謝:-)抱歉我的非常糟糕的措辭問題! – zomboble 2012-04-19 12:27:19

+1

不要太擔心,雖然很明顯,你可以更明確地表達你的問題,這對我們來說更容易幫助你。你絕對受歡迎;我很高興得到了幫助! =) – 2012-04-19 12:30:42

0

您所展示的特定CSS並未在您向我們顯示的HTML中選擇任何內容。前兩條規則都需要.topactive,並且這不在您的HTML中。接下來的兩條規則都要求.sf-menu,並且這也不存在於您的HTML中。

如果您只想要對象上的第一級子女,請在規則中使用直接子代理>

在你實際上已經證明我們的HTML,您可以選擇頂級UL與此CSS所有一級li元素:

body > ul > li 

但是,在現實世界中,你可能會指定你的用class和id頂級UL對象和做這樣的事情:

#myTop > li 

.myTop > li 

你在哪裏把myTop class或id放在頂層UL元素上。

+0

這個選擇器是不夠的,因爲每個「li」是一個「ul」的孩子;您必須將'ul'選擇器錨定到其他未在標記中顯示的父級。 – BoltClock 2012-04-19 12:24:29

+0

@ BoltClock'saUornorn - 你是對的。我糾正了它。 – jfriend00 2012-04-19 12:26:15