使用flex时垂直对齐[重复]

Posted

技术标签:

【中文标题】使用flex时垂直对齐[重复]【英文标题】:Vertical Align when using flex [duplicate] 【发布时间】:2021-07-29 00:57:39 【问题描述】:

我正在创建一个标题,理想情况下希望左侧的标题和右侧的导航栏图标。我可以使用设置为 dislay: flexjustify-content: space-between 的父 div 来实现这一点,如下所示。

Using Flex

但是,在这种情况下,我无法应用垂直对齐来水平居中对齐文本和图标。我想我可以使用 margin 让它看起来正确但不确定这是否是最好的方法。

另一方面,我可以使用display: inline-block 执行类似的操作,但是我不知道如何将图标放在右侧。

Using inline-block

我的问题是哪种方法更好,另外我如何实现所需的功能,使文本位于左侧,图标位于视口右侧,确保它们都垂直对齐?

【问题讨论】:

【参考方案1】:

您可以使用align-items: center。由于您的 flex 方向是行,align-items: center 将控制垂直对齐方式。

div 
    display: flex;
    justify-content: space-between;
    width: 80%;
    align-items: center;

【讨论】:

【参考方案2】:

如果我理解得很好 align-items: center; 搭配 justify-content: space-between 应该可以解决问题

【讨论】:

【参考方案3】:

您可以使用align-items 在行布局中沿交叉轴垂直对齐弹性项目。

具体来说,align-items: center 因此弹性项目边距框位于横轴上的线的中心。看看更新后的CodeSandbox Demo

.container 
  display: flex;
  justify-content: space-between;
  align-items: center;
<div class="container">
  <h4>Workbench</h4>
  <span>&#9776;</span>
</div>

【讨论】:

【参考方案4】:

这是你想要完成的吗?

header 
  display: flex;
  justify-content: space-between;
  align-items: center;
<header>
  <h1>
  Text
  </h1>
  
  <div>
  Some Icon
  </div>
</header>

【讨论】:

以上是关于使用flex时垂直对齐[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Flex垂直对齐不起作用,只有水平对齐起作用[重复]

如何垂直对齐一个flex元素子元素[重复]

我如何垂直对齐具有不同高度的网格元素? [重复]

CSS Flex除单个右水平对齐元素外的所有中心[重复]

使用flex时垂直居中[重复]

使用flexbox在链接中垂直对齐文本[重复]