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

鲁迪坎乔蒂

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

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;
        }
<html>
  <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>

丹尼XCII

对于flexbox来说,这是一个很好的用例-通过在容器类中添加以下三行,可以实现左右对齐的部分:

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>

这证明了flexbox的直接子级可以左右对齐,并在其之间留有空间。如果存在两个以上的元素,则将在容器的整个宽度上以相等的间距放置它们。

对齐项目将确定弹性框内元素垂直对齐

如果flex-direction未设置(默认值-row),则为true flex-direction设置为column时,对齐和对齐影响的“轴”反转。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在导航栏中垂直居中放置文本?

如何在导航栏中垂直居中放置元素和文本

如何在布尔玛中垂直居中放置元素?

如何在网格中垂直居中放置所有文本?

如何在导航栏中垂直居中元素?

如何使用CSS在所有浏览器中垂直居中放置一个“ div”元素?

如何在<span>中垂直居中放置文本?

如何在Bootstrap 3中垂直居中放置文字?

如何在SPAN中垂直居中放置图像

Bootstrap:如何在列中垂直居中放置内容

如何在多个div中垂直居中放置文本

如何在React Native中垂直居中放置表单

如何在CSS Grid中垂直居中放置内容?

如何在表格环境中垂直居中放置文本?

如何在工具栏中居中放置ImageView?

如何在具有动态变化高度的div中垂直居中放置文本?

我想在我的android底部导航栏中垂直居中放置文本

如何在ColumnLayout中居中放置元素

如何在CSS中居中放置元素?

如何在Swift中为所有iOS设备水平居中放置标签

如何将导航栏居中放置在屏幕上?

我想将导航栏居中放置在CSS中

如何在我的导航栏中垂直居中 div

如何将图像垂直居中放置在页面上剩余空间的平衡处(导航栏/页眉和页脚较少)并具有背景图像?

如何在网格单元内垂直居中放置元素?

如何在没有固定高度的情况下在IE 11中垂直居中放置文字?

如何在Bootstrap导航栏内居中放置表单元素(搜索框)?

如何在不居中导航栏的情况下垂直居中身体元素

如何在画布上垂直居中放置文本