2013-02-24 56 views
0

我想設置一個子菜單,其中第一項排列了它的父母李項目,是否有一種方法做到這一點,而不使用負邊緣在第二UL(# innerNav)。我的代碼可以在http://jsfiddle.net/ueEEa/2/排列一個子菜單,它的父母李


#parentNav { 
    float: left; 
    padding: 0; 
    width: 160px; 
    border-bottom: 1px dashed #999; 
} 

#parentNav > li, #parentNav > li > #innerNav > li { 
    list-style: none; 
    border: 1px dashed #999; 
    display: block; 
} 

#parentNav li #innerNav { 
    display: none; 
} 

#parentNav > li:hover > { 
    display: block; 
    margin-left: 160px; 
    width: 160px; 
    padding: 0px; 
    position:absolute 
} 

<div> 
    <ul id="parentNav"> 
     <li>Item 1</li> 
     <li>Item 2 
      <ul id="innerNav"> 
       <li>Item 2.1</li> 
       <li>Item 2.2</li> 
      </ul> 
     </li> 
     <li>Item 3</li> 
    </ul> 
</div> 
+0

爲什麼你反對使用負邊距? – 2013-02-24 21:44:45

回答

0

找到你可以通過給孩子導航菜單display: inline-block,而不是block

否則這意味着其左邊緣將通常針對父<li>元件的右邊緣平齊,從而修復,我們還需要給display: relative到頂端菜單和left: 160px(等於頂部菜單的寬度),以子導航菜單。

See it in action

+0

謝謝,但是我發現當我在列表中的每個項目周圍放上一個「a」時,就會再次混亂起來。 http://jsfiddle.net/HXBZ2/ – MorganJ 2013-02-24 22:24:21

+0

你也可以解決這個問題,但在這一點上,我有一個反問題:你問一個問題,得到一個答案,然後*改變問題*。令人驚訝的是答案不再有效? – Jon 2013-02-24 22:27:15