【发布时间】:2012-12-22 04:38:51
【问题描述】:
首先,here's the dropdown/collapsible menu 我已经构建好了。
至于小提琴中显示的the preview中的“menu”和“menu-item”是什么——Channels、Search和About我们是菜单,而当你点击菜单时下拉/滑出的那些是菜单项。
屏幕截图:
我在菜单项上使用position: absolute; (.collapse),在菜单上使用position: relative;。
相关代码 (more in the fiddle):
/* Menu: <li class="float-left top-menu">... */
.top-menu {
position: relative;
}
/* Menu-Item: <div id="channels-menu-item-container" class="collapse">... */
.collapse {
position: absolute;
width: 570px;
z-index: 1000;
padding: 0;
margin: 0;
color: #222;
background-color: #fff;
-webkit-box-shadow: 0 5px 5px rgba(0, 0, 0, 0.2), 0 10px 20px rgba(0, 0, 0, 0.12);
-moz-box-shadow: 0 5px 5px rgba(0, 0, 0, 0.2), 0 10px 20px rgba(0, 0, 0, 0.12);
box-shadow: 0 5px 5px rgba(0, 0, 0, 0.2), 0 10px 20px rgba(0, 0, 0, 0.12);
overflow: hidden;
}
是否也可以在“菜单项”(.collapse) 上使用position: relative; 来实现相同的功能?
注意:在您使用小提琴提交答案之前,请确保通过单击每个菜单并比较两个小提琴(您的和我的)中的菜单功能相同 (以确认没有菜单项因位置变化而错位)。
当然,您可以添加额外的 HTML 和 CSS。
是的,我尝试了几个小时都徒劳无功,想看看是否有可能。
【问题讨论】:
-
如果我可以问 -
absolute有什么问题?在relative中定位absolute效果很好(例如,right: 0;在右对齐菜单中非常适合您)- 什么不适合您?此外,我在其他框下方看到“版本”框,而不是在右侧(在 Firefox 17 上) -
@Kobi 是的,没错。您看到的是因为我在菜单项 (
.collapse) 上指定了宽度,但我不想要它。如果我删除宽度,菜单项不再是水平的,即垂直折叠。但是,如果我可以让菜单与relative一起使用,我可以在菜单项中的列中使用inline-block而不是float。明白了吗? -
我想是的。那么,真正的问题是如何获得自动宽度?
-
@Kobi 本质上是的。这是正确的。但我认为唯一的选择是使用
position: relative;并使用inline-block作为菜单项内的列。