这针对 Opera、Chrome 和 IE10 进行了优化。Firefox 和 Safari 遵循较旧的 Flexbox 规范,并且当列表中的项目数量平衡时看起来最好。对于非 Flexbox 浏览器,有一个不错的后备方案。您可能需要添加额外的样式来掩盖不均匀的列表高度。
http://codepen.io/cimmanon/pen/HxLvf
nav {
display: -webkit-box;
display: -moz-box;
display: -webkit-flexbox;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
}
ul {
display: table-cell; /* non-flexbox browsers */
display: -webkit-box;
display: -moz-box;
display: -webkit-flexbox;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-flex: 1;
-moz-box-flex: 1;
-webkit-flex: 1 1 auto;
-ms-flex: 1 1 auto;
flex: 1 1 auto;
}
li {
display: table-cell; /* non-flexbox browsers */
display: -webkit-box;
display: -moz-box;
display: -webkit-flexbox;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-box-flex: 1;
-moz-box-flex: 1;
-webkit-flex: 1 1 10em;
-ms-flex: 1 1 10em;
flex: 1 1 10em;
width: 10em; /* for old Firefox/Safari */
/* for vertical/center alignment */
-webkit-flex-align: center;
-ms-flex-align: center;
-webkit-align-items: center;
align-items: center;
-webkit-box-pack: center;
-moz-box-pack: center;
-webkit-flex-pack: center;
-ms-flex-pack: center;
-webkit-justify-content: center;
justify-content: center;
text-align: center;
}
/* pretty it up! */
nav {
background: #99D;
}
ul {
list-style: none;
padding: 0;
}
li {
padding: .5em 1em;
background: white;
border: 1px solid;
}
<nav>
<ul>
<li><a href="#">Home</a></li>
<li><a href="#">Latest Projects</a></li>
<li><a href="#">Products & Eco Funding</a></li>
<li><a href="#">The Green Deal</a></li>
</ul>
<ul>
<li><a href="#">Latest Projects</a></li>
<li><a href="#">Job Vacancies</a></li>
<li><a href="#">About Us</a></li>
<li><a href="#">Contact Us</a></li>
</ul>
</nav>
事实上,您有 2 个列表要在其中均衡元素的宽度,这使得 Flexbox 成为必要。如果您只有一个列表,您可以将整个事情简化为仅使用display: table
onul
和display: table-cell
.li