提问者:小点点

如何用Flexbox将列表项居中?


我正在尝试创建一个导航栏,标题在左边,列表项居中。我使用flexbox来水平排列链接。然后在ul中添加,将它们向左移动,但不对称地居中。我猜已经没有空间让ul移动了。我查了其他类似的帖子,但不太明白问题出在哪里。谢谢你抽出时间。

HTML

null

* {
    box-sizing: border-box;
    padding: 0;
    margin: 0;
}

body {
    font-family: 'Open Sans', sans-serif;
    background: #fff;
    color: #333;
    line-height: 1.6;
    background: url('/img/showcase.jpg.jpg');
}


#navbar  {
    display: flex;
    justify-content: center;
    align-items: center;
    flex: 1;
    top: 0;
    width: 100%;
    height: 60px;
    background-color: rgba(10, 10, 10, 0.5);
}

#navbar ul {
    display: flex;
    justify-content: space-around;
    text-align: center;
    margin: 0 auto;
    padding: 0;
}

#navbar li {
    list-style: none;
    padding: 20px;
}
<nav id="navbar">
        <div class="logo">
            <h1>Welcome</h1>
        </div>
        <ul>
            <li><a href="#">Home</a></li>
            <li><a href="#">Home</a></li>
            <li><a href="#">Home</a></li>
            <li><a href="#">Home</a></li>
        </ul>
    </nav>

null


共1个答案

匿名用户

您可以从中删除

父容器()上的flexbox已将居中。在添加flexbox之后向其添加会破坏布局。

null

* {
  box-sizing: border-box;
  padding: 0;
  margin: 0;
}
body {
  font-family: 'Open Sans', sans-serif;
  background: #fff;
  color: #333;
  line-height: 1.6;
  background: url('/img/showcase.jpg.jpg');
}
#navbar {
  display: flex;
  justify-content: center;
  align-items: center;
  flex: 1;
  top: 0;
  width: 100%;
  height: 60px;
  background-color: rgba(10, 10, 10, 0.5);
}
#navbar ul {
  display: flex;
  justify-content: space-around;
  text-align: center;
  /* margin: 0 auto; REMOVE THIS LINE */
  padding: 0;
}
#navbar li {
  list-style: none;
  padding: 20px;
}
<nav id="navbar">
  <div class="logo">
    <h1>Welcome</h1>
  </div>
  <ul>
    <li><a href="#">Home</a></li>
    <li><a href="#">Home</a></li>
    <li><a href="#">Home</a></li>
    <li><a href="#">Home</a></li>
  </ul>
</nav>