如何使用flexbox在导航列表项之间居中徽标?

时间:2017-02-24 15:46:16

标签: html css css3 flexbox

如何使用五个链接进行导航,其中一个链接是需要居中的图像(徽标)?

我的HTML:

<nav>
  <ul>
    <span>
        <li><a href="#">Restaurants</a></li>
        <li><a href="#">About</a></li>
    </span>
    <li><a href="#"><img src="img/logo.svg" alt="Posthusets logo i hvid format" class="nav-logo"></a></li>
    <span>
        <li><a href="#">TakeAway</a></li>
        <li><a href="#">Contact</a></li>
    </span>
  </ul>
</nav>

3 个答案:

答案 0 :(得分:2)

&#13;
&#13;
nav {
  display: flex;
}

nav>* {
  flex: 1;
  display: flex;
  align-items: center;
  justify-content: space-around;
}
&#13;
<nav>
  <span>
        <a href="#">Restaurants</a>
        <a href="#">About</a>
    </span>
  <a href="#"><img src="http://i.imgur.com/60PVLis.png" width="50" height="50"></a>
  <span>
        <a href="#">TakeAway</a>
        <a href="#">Contact</a>
    </span>
</nav>
&#13;
&#13;
&#13;

jsFiddle

答案 1 :(得分:0)

您可以在li元素上使用flex-grow

*{
  padding: 0;
  margin: 0;
 }

ul{
  width: 100%;
  display: inline-flex;
  flex-direction: row;
  list-style-type: none;
}

li{
  height: 50px;
  line-height: 50px;
  text-align: center;
  flex-grow: 1;
}

https://jsfiddle.net/orzo8d2t/

(请注意我删除了span theree)

答案 2 :(得分:0)

如果有人仍然需要帮助,请按照以下方式完成此操作。这可以更好地响应,因为随着屏幕变宽,每个导航项之间的间隙不会增加,它保持一致。 (在移动设备上,您可以隐藏此菜单并显示您的移动菜单。)

HTML:

<div class="container">

<div class="navbar">

    <ul>
        <li><a href="#">Restaurants</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#"><img width="200px" src="images/logo.png"/></a></li>
        <li><a href="#">TakeAway</a></li>
        <li><a href="#">Contact</a></li>
    </ul>

</div>

CSS:

.container {
  width: 100%;
}
.navbar {
  width: 100%;
  margin: 0 auto;
  text-align: center;
  background-color: #000;
  padding-top: 30px;
  padding-bottom: 30px;
}
.navbar li {
  list-style: none;
  display: inline-block;
  margin-right: 45px;
  color: #fff;
  vertical-align: middle;
}
.navbar li:nth-child(5) {
  margin-right: 0px;
}