我有点卡住了。我正在尝试构建一个 1024px 宽的水平导航栏,这将允许在其下方显示子菜单。但我希望子菜单的宽度也是 1024px,并直接显示在导航栏下方,垂直对齐。
此时,子菜单出现,但将其左侧固定在您悬停的当前li
的左侧。我该如何解决这个问题?
谢谢!
编辑:所以在鼠标悬停上它看起来像这样:http://eventav.biz/site/example.jpg
链接到我到目前为止所做的 -http://www.eventav.biz/site/
ul.top_menu {
position: relative;
margin: 0;
margin-bottom: -1px;
list-style: none;
display: table;
width: 1024px;
border: 1px solid #111111;
border-bottom: 1px solid #000000;
border-radius: 10px 10px 0px 0px;
}
.top_menu li {
display: block;
position: relative;
border-right: 1px solid #111111;
float: left;
margin: 0px;
display: table-cell;
vertical-align: middle;
}
.top_menu li:first-child {
border-left: 1px solid #111111;
}
.top_menu li a {
display: block;
text-decoration: none;
color: #000000;
text-shadow: 3px 3px 8px #3A3A3A;
padding: 15px;
height: 30px;
display: table-cell;
vertical-align: middle;
margin: 0px;
}
#top_menu_item ul {
display: none;
margin: 0px;
}
#top_menu_item:hover ul {
display: block;
position: fixed;
margin: 0;
}
#top_menu_item:hover li {
width: 1024px;
background-color: #666;
text-align: left;
color: #FFF;
font-size: 12px;
margin: 0px;
}
<ul class="top_menu">
<li id="top_menu_item"><a href="#">HOME</a></li>
<li id="top_menu_item"><a href="#">OUR SERVICES</a>
<ul><li id="top_menu_item"><a href="#">test</a></li></ul>
</li>
<li id="top_menu_item"><a href="#">EXAMPLES OF OUR WORK</a>
<ul><li id="top_menu_item"><a href="#">test</a></li></ul>
</li>
<li id="top_menu_item"><a href="#">CONTACT US</a></li>
</ul>
从子ul
中删除固定定位,并将其替换为 position:absolute
。添加left:0px
,然后从父li
中删除position:relative
。
工作 jsFiddle 示例
#top_menu_item:hover ul {
display: block;
position: fixed; /* Change this to position:absolute; */
left:0px; /* Add this */
}
.top_menu li {
display: block;
position: relative; /* Remove this */
}
1) 从#top_menu_item
中删除position: relative;
2) 将#top_menu_item ul
设置为position: absolute; left: 0;
3) 用padding-left: 0;
去除#top_menu
上的左填充
4) 添加:
#top_menu_item:first-child {
margin-left: 40px;
}
从本质上讲,问题在于您一直在相对于其父li
定位内部ul
标签。相反,上面的解决方案将辅助导航绝对定位为主导航,我们使用left: 0;
来确保它完全左对齐。
在页面上多次使用id
也违反了标准。因此,我建议将#top_menu_item
更改为.top_menu_item
并相应地更改 HTML。
如果您有任何问题,请告诉我!