我正在将应该是一个简单的导航栏和带有弹性框的样式放在一起。由于某种原因,它不是显示为一行(水平),而是显示为一列(垂直)。
我可以使用float:left 使链接变为水平,但是它们不会均匀地拉伸以填充导航栏。
我的理解是flex-grow:1 应该让每个项目占据相等的空间。但这并没有发生。
有四个声明没有按预期工作:
flex-direction 导航栏中的链接位于一列而不是一行
padding 尽管导航栏的内边距设置为零,但它似乎仍然有内边距
text-align 每个中的文本<li>没有水平居中
flex-grow 链接间距不均匀
我不确定它们是否都源于一个问题,或者每个单独的问题。
这是一个简化的片段:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Curse of the Nav Bar</title>
<style>
nav {
display: flex;
flex-direction: row; /* not working */
background-color: #d2d6d6;
padding: 0; /* not working */
}
nav a {
display: flex;
text-decoration: none;
list-style: none;
border: 2px solid #727171;
color: #727171;
background-color: #c4c4c4;
padding: 4px;
margin: 2px;
text-align: center; /* not working */
flex-grow: 1; /* not working */
}
nav a:hover,
nav a:active {
background-color: #aaa;
}
</style>
</head>
<body>
<nav>
<ul>
<a href="#"><li>Once</li></a>
<a href="#"><li>Upon</li></a>
<a href="#"><li>A Time</li></a>
<a href="#"><li>There</li></a>
<a href="#"><li>Was</li></a>
<a href="#"><li>A Problematic</li></a>
<a href="#"><li>Nav Bar</li></a>
</ul>
</nav>
</body>
</html>
我以前用过很多次弹性盒子,但从未见过它表现得像这样。