2015-02-06 130 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