如何在导航栏中垂直居中放置所有元素?

问题描述 投票:0回答:1

this示例为起点,我试图创建一个导航栏,该导航栏的左侧和右侧部分均垂直,以确保其中所有元素在垂直方向上居中。不幸的是,即使right-alignedleft-aligned类都设置了vertical-align: middle属性,其右侧也没有垂直居中。我缺少什么?这是代码串:

<html>
  <style>
    header img {
      display: inline-block;
    }
    header nav {
      display: inline-block;
      font-size: 1em;
      vertical-align: middle;
    }
    header nav ul {
      padding: 0;
      margin: 0;
    }
    header nav ul img {
      vertical-align: middle;
    }
    header nav li {
      display: inline-block;
    }
    header nav li a {
      display: inline-block;
      padding: .4em .8em;
      font-size: 1em;
      text-decoration: none;
      color: black;
      background: #eee;
      line-height: 1;
    }
    header .container {
      max-width: 800px;
      margin: auto;
      overflow: hidden;
    }
    .left-aligned {
      float: left;
    }
    .right-aligned {
      float: right;
    }
  </style>
  <body>
    <header role="banner">
      <div class="container">
        <div class="left-aligned">
          <img class="left" src="http://placehold.it/200x200">
        </div>
        <div class="right-aligned">
          <nav id="navigation" role="navigation">
            <ul>
              <li>
                <img src="http://placehold.it/100x100">
                <a href="#" title="About Us">About Us</a>
              </li>
              <li><a href="#" title="Biographies">Biographies</a></li>
              <li><a href="#" title="Services">Services</a></li>
              <li><a href="#" title="Careers">Careers</a></li>
              <li><a href="#" title="Contact">Contact</a></li>
            </ul>
          </nav>
        </div>
      </div>
    </header>
  </body>
</html>
html css navigationbar
1个回答
0
投票

这是flex的好用例-通过在容器类中添加以下三行,可以实现左右对齐的部分:

display: flex;
justify-content: space-between;
align-items: center;

因此您的最终代码将如下所示(为了清楚起见,我将HTML和CSS分开了:]

header img {
      display: inline-block;
    }
    header nav {
      display: inline-block;
      font-size: 1em;
    }
    header nav ul {
      padding: 0;
      margin: 0;
    }
    header nav ul img {
      vertical-align: middle;
    }
    header nav li {
      display: inline-block;
    }
    header nav li a {
      display: inline-block;
      padding: .4em .8em;
      font-size: 1em;
      text-decoration: none;
      color: black;
      background: #eee;
      line-height: 1;
    }
    header .container {
      max-width: 800px;
      margin: auto;
      overflow: hidden;
      display: flex;
      justify-content: space-between;
      align-items: center;
    }
<header role="banner">
  
  <div class="container">
    
    <div class="left-aligned">
      <img class="left" src="http://placehold.it/200x200">
    </div>
    
    <div class="right-aligned">
      <nav id="navigation" role="navigation">
        <ul>
          <li>
            <img src="http://placehold.it/100x100">
            <a href="#" title="About Us">About Us</a>
          </li>
          <li><a href="#" title="Biographies">Biographies</a></li>
          <li><a href="#" title="Services">Services</a></li>
          <li><a href="#" title="Careers">Careers</a></li>
          <li><a href="#" title="Contact">Contact</a></li>
        </ul>
      </nav>
    </div>
    
  </div>
  
</header>
© www.soinside.com 2019 - 2024. All rights reserved.