【发布时间】:2015-08-19 20:06:19
【问题描述】:
我在使用下拉菜单时遇到了一些困难。我正在尝试创建多个彼此相邻且宽度可变的列表。如您所见,对齐本身正在工作:
http://codepen.io/anon/pen/aOrQyw
问题是我似乎无法弄清楚如何准确地将父 div 彼此相邻放置。父 div 现在被放置在彼此之上。这些列表项似乎太长了,这很奇怪,因为我没有为这些项设置宽度。正如我在其他页面上阅读的那样,可能是父 div 位置设置为绝对导致此问题,但我不知道如何解决它。有没有人可以帮我解决这个问题?
代码:
nav {
background: #e5e7eb;
}
.wrap {
width: 1200px;
margin: 0 auto;
}
#primary ul {
width: 100%;
height: 48px;
line-height: 48px;
position: relative;
display: inline-table;
z-index: 100000;
}
#primary ul:after {
content: "";
display: block;
clear: both;
}
#primary ul li {
padding: 0 0.8333333333333333%;
display: inline-block;
}
#primary ul li:first-child {
padding-left: 0;
}
#primary ul li:last-child {
padding-right: 0;
}
#primary ul li a {
text-transform: uppercase;
display: block;
}
#primary ul li > .submenu {
display: none;
}
#primary ul li:hover > .submenu {
width: 100%;
height: 250px;
background: pink;
position: absolute;
top: 100%;
left: 0;
right: 0;
display: block;
}
#primary ul li > .submenu .outer {
position: relative;
display: inline-block;
}
#primary ul li > .submenu .list {
display: -webkit-flex;
display: -moz-flex;
display: -ms-flex;
display: flex;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
align-items: flex-start;
justify-content: flex-start;
}
#primary ul li > .submenu .list h4 {
height: 20px;
line-height: 20px;
margin: 10px;
display: block;
}
#primary ul li > .submenu .list h4 a {
font-size: 1em;
font-weight: 600;
text-transform: none;
}
#primary ul li > .submenu .list ul {
width: 100%;
height: 210px;
margin: 0 10px;
display: -webkit-flex;
display: -moz-flex;
display: -ms-flex;
display: flex;
-webkit-flex-direction: column;
flex-direction: column;
-webkit-flex-wrap: wrap;
flex-wrap: wrap;
align-content: flex-start;
-webkit-align-content: flex-start;
}
#primary ul li > .submenu .list ul li {
height: 20px;
line-height: initial;
padding: 0;
margin-right: 40px;
}
#primary ul ul li.title {
font-weight: 600;
margin: 0 0 10px 0;
}
<nav>
<div class="wrap" id="primary">
<ul>
<li>Nav 1</li>
<li><a href="/">Nav 2</a>
<div class="submenu">
<div class="outer" style="background: grey;">
<div class="list ">
<h4>List 1</h4>
<ul>
<li>First item in list 1</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Last item in list 1</li>
</ul>
</div>
</div>
<div class="outer " style="background: lightgrey; ">
<div class="list ">
<h4>List 2 with items</h4>
<ul>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Item</li>
<li>Last item list 2</li>
</ul>
</div>
</div>
</div>
</li>
<li>Nav 3</li>
</ul>
</div>
<nav>
提前致谢!
【问题讨论】:
标签: css drop-down-menu flexbox