2015-02-06 143 views
1

我們都與定位絕對div的困難時期:S 在我的情況下,其水平方向的子菜單,這個CSS:絕對和相對定位

ul.children{ 
display:none; 
position:absolute; 
} 
ul.children li{ 
position:relative; 
height:60px; 
float:none; 
} 
li.page_item_has_children:hover > ul.children{ 
display:inline; 
} 

enter image description here

正如你可以看到圖片整個子菜單移動到父母寬度的50%左邊... 我嘗試了一切,創造了一個更大的混亂xD

因此,如果任何人都可以幫助我,我會非常感激: )

HTML:

<li class="page_item page-item-2 page_item_has_children"> 
    <a href="url">About</a> 
    <ul class='children'> 
     <li class="page_item page-item-39"> 
      <a href="url">About</a></li> 
     <li class="page_item page-item-41"> 
      <a href="url">Contact us</a></li> 
    </ul> 
</li> 

我不能改變HTML導致其wordpress主題:■

+0

你可以張貼一些HTML? – arnolds 2015-02-06 14:27:26

+3

*「我們都有定位絕對div的困難時期:S我」 - - 不,我們沒有。 ;) – GolezTrol 2015-02-06 14:34:30

+0

@Morsus你想要這樣的http://jsfiddle.net/10pxegb1/ – rJ7 2015-02-06 14:46:31

回答

1

嘗試是這樣的:

ul { 
    list-style-type: none; 
    padding: 0; 
} 

.page_item_has_children { 
    position: relative; 
} 

ul.children { 
    display: none; 
    position: absolute; 
    top: 100%; 
    left: 0; 
    padding: 0; 
    min-width: 200px; /* or whatever makes sense */ 
} 

ul.children li { 
    height: 60px; 
} 

.page_item_has_children:hover > ul.children { 
    display: block; 
} 

這裏重要的一塊是確保'page_item_has_children'元素相對定位,而'ul'兒童絕對定位。

JS Fiddle

+0

這是我想要的最接近的答案。還有一些問題,當兒童文字比父母長.. – Morsus 2015-02-06 15:17:24

+0

http://jsfiddle.net/erier/z047bdn8/ 看一看,這是我的確切代碼。 – Morsus 2015-02-06 15:27:23

+0

Sry,錯誤的鏈接,這是好的: http://jsfiddle.net/Morsus/kfjjzbLd/ – Morsus 2015-02-06 15:29:34

1

更新

ul.children { 
 
    display: none; 
 
} 
 

 
ul.children li { 
 
    position: relative; 
 
    height: 60px; 
 
    float: none; 
 
} 
 

 
li.page_item_has_children:hover > ul.children { 
 
    display: inline; 
 
} 
 

 
li { 
 
    float: left; 
 
    list-style-type: none; 
 
    width: 5em; 
 
}
<ul> 
 
    <li class="page_item page-item-2 page_item_has_children"> 
 
    <a href="url">About</a> 
 
    <ul class='children'> 
 
     <li class="page_item page-item-39"> 
 
     <a href="url">About</a></li> 
 
     <li class="page_item page-item-41"> 
 
     <a href="url">Contact us</a></li> 
 
    </ul> 
 
    </li> 
 
    
 
    <li class="page_item page-item-2 page_item_has_children"> 
 
    <a href="url">More info</a> 
 
    <ul class='children'> 
 
     <li class="page_item page-item-39"> 
 
     <a href="url">Item 1</a></li> 
 
     <li class="page_item page-item-41"> 
 
     <a href="url">Item 2</a></li> 
 
     <li class="page_item page-item-41"> 
 
     <a href="url">Item 3</a></li> 
 
    </ul> 
 
    </li> 
 
</ul>

+0

是的,我試過了,如果我刪除了絕對位置,它會拉伸父母的div寬度並將所有菜單項移動到右側。 – Morsus 2015-02-06 15:14:42

+0

查看我的更新。很難知道是什麼原因導致你的問題沒有看到更多的代碼。看起來@erier正指着你朝着正確的方向前進。 – 2015-02-06 15:27:49

+0

我剛剛上傳了我的確切代碼: http://jsfiddle.net/Morsus/kfjjzbLd/ – Morsus 2015-02-06 15:32:24