【发布时间】:2016-03-04 13:31:39
【问题描述】:
我正在开发我的个人网站。父 header 被放置在一个 flexbox 中:
HTML:
<header class="main">
<div class="content">
<div class="logo">
<a href="#"><img src="image.png" alt="" /></a>
</div>
<div class="navigation">
<nav class="main-nav">
<ul>
<li><a href="#">Menu 1</a>
<ul>
<li><a href="#">Sub-Menu 1</a></li>
<li><a href="#">Sub-Menu 2</a></li>
</ul>
</li>
<li><a href="#">Menu 2</a></li>
</ul>
</nav>
</div>
</div>
</header>
CSS:
header { display: -webkit-flex; display: flex; justify-content: center; overflow: auto;
height: 20vh; width: 100%; align-items: flex-end; z-index: 999; }
header .content { width: 50vw; height: auto; position: relative;
display: -webkit-inline-flex; display: inline-flex;
justify-content: space-between; overflow: auto; align-items: flex-end; }
这会将徽标和导航放置在父元素的底部,在header .content div 中这些元素的左侧和右侧。
但是我的下拉菜单项与容器重叠,导致标题中出现垂直滚动条。
我不想在导航和徽标上使用position: absolute; 而不是 flexbox,因为这样它们可以水平重叠。为小宽度屏幕编写一个导航隐藏器可以解决这个问题,但我认为 flexbox 是一个更好的解决方案。
完整的下拉菜单 css 请访问 JSfiddle:https://jsfiddle.net/Lanti/s4Lqqyyp/15/
有没有办法将 flexbox 用作父级并隐藏下拉菜单项?
.main-nav ul ul { visibility: hidden; opacity: 0; position: absolute; }
感谢您的帮助!
更新:
https://jsfiddle.net/Lanti/s4Lqqyyp/18/
添加.container { display: -webkit-flex; display: flex; flex-direction: column; } 并从header .content 中删除position: relative; 似乎解决了这个问题。
【问题讨论】:
标签: html css drop-down-menu flexbox