我有一个顶部水平导航,我使用css flexbox规则来控制间距。
我希望菜单中的第一项与左侧对齐,最后一项与右侧对齐,其余项之间的间距相等。
这可能吗?我认为justify-content: space-between;
会实现这一点,但我无法让它发挥作用。
我举了一个我在jsfiddle尝试做的事情的例子。我也把这段代码放在下面。
我能想到的另一种方法是给每个text-align: center
元素li
,但是对于第一个和最后一个,我可以给text-align: left
和text-align: right
但这会在第二个和第二个元素之间留出太多的间距。
.container{
background-color: yellow;
width: 1100px;
}
.container ul#nav {
padding: 0;
display: block;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
justify-content: space-between;
}
.container ul#nav li {
list-style: none;
-webkit-flex: 2 1 auto;
-ms-flex: 2 1 auto;
flex: 2 1 auto;
justify-content: space-between;
}
.container ul#nav li {
justify-content: space-between;
}

<div class="container">
<ul id="nav">
<li><a href="#">Apples</a></li>
<li><a href="#">Oranges</a></li>
<li><a href="#">Pears</a></li>
<li><a href="#">Kiwis</a></li>
</ul>
</div>
&#13;
答案 0 :(得分:5)
您可以通过flex: 2 1 auto;
移除.container ul#nav li
来实现此目的:
.container{
background-color: yellow;
width: 1100px;
}
.container ul#nav {
padding: 0;
display: block;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
justify-content: space-between;
}
.container ul#nav li {
list-style: none;
-webkit-flex: 2 1 auto;
-ms-flex: 2 1 auto;
justify-content: space-between;
}
.container ul#nav li {
justify-content: space-between;
}
<div class="container">
<ul id="nav">
<li><a href="#">Apples</a></li>
<li><a href="#">Oranges</a></li>
<li><a href="#">Pears</a></li>
<li><a href="#">Kiwis</a></li>
</ul>
</div>
答案 1 :(得分:0)
试试这个:
.flex-container {
padding: 0;
margin: 0;
list-style: none;
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-flow: row wrap;
justify-content: space-around;
}
.flex-item {
background: tomato;
padding: 5px;
width: 200px;
height: 150px;
margin-top: 10px;
line-height: 150px;
color: white;
font-weight: bold;
font-size: 3em;
text-align: center;
}
&#13;
<ul class="flex-container">
<li class="flex-item">1</li>
<li class="flex-item">2</li>
<li class="flex-item">3</li>
<li class="flex-item">4</li>
<li class="flex-item">5</li>
<li class="flex-item">6</li>
</ul>
&#13;
答案 2 :(得分:0)
问题在于,即使一个元素具有 flex-grow> 0 , justify-content 的任何值也会自动失效,并且正的多余空间将在具有 flex-grow 的项目之间分配。
结论:“所有 flex-items 必须具有 flex-grow:0; 以便调整内容上班:。
在您的特定情况下,问题出在以下行:flex: 2 1 auto;
会自动设置flex-grow: 2;
要修复此问题,只需使用代码行flex: 0 1 auto;