CSS Flexbox:将最后第n个项目对齐到末尾[重复]

Posted

技术标签:

【中文标题】CSS Flexbox:将最后第n个项目对齐到末尾[重复]【英文标题】:CSS Flexbox: Align last nth items towards the end [duplicate] 【发布时间】:2020-12-13 16:32:41 【问题描述】:

我在“nav”中有几个“div”:

<nav>
  <div>A</div>
  <div>B</div>
  <div>C</div>
  <div>D</div>
  <div>E</div>
  <div>F</div>
</nav>

我想在顶部对齐 div A、B、C、D,但在底部对齐 div E 和 F:

此代码适用于最后一项 (F),但 E 正好浮动在中间:

nav 
        display: flex;
        flex-direction: column;
        align-items: flex-start;
  
        & > div:nth-child(5),
        & > div:nth-child(6) 
          margin-top: auto;
        

如何使 div E 与底部的 div F 保持一致(无需在导航内额外包装 div)?

JSFiddle

【问题讨论】:

【参考方案1】:

您可以通过以下两种方式做到这一点。

使用nth-child()

nth-child(5) 上使用margin-top:auto 只是为了获得您想要的结果

现场演示:

nav 
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  height: 250px;
  width: 150px;
  border: 1px solid red;


div 
  display: flex;
  justify-content: center;
  border: 1px solid blue;
  width: 100%;


div:nth-child(5) 
  margin-top: auto;
<nav>
  <div>A</div>
  <div>B</div>
  <div>C</div>
  <div>D</div>
  <div>E</div>
  <div>F</div>
</nav>

使用:nth-last-child()

您也可以使用nth-last-child() 来实现此目的。

nav 
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  height: 250px;
  width: 150px;
  border: 1px solid red;


div 
  display: flex;
  justify-content: center;
  border: 1px solid blue;
  width: 100%;


div:nth-last-child(2) 
  margin-top: auto;
<nav>
  <div>A</div>
  <div>B</div>
  <div>C</div>
  <div>D</div>
  <div>E</div>
  <div>F</div>
</nav>

【讨论】:

以上是关于CSS Flexbox:将最后第n个项目对齐到末尾[重复]的主要内容,如果未能解决你的问题,请参考以下文章

CSS Flexbox:对齐项目和对齐内容之间的区别[重复]

flexbox将项目对齐到指定的基线?

CSS Flexbox 右对齐响应式

将最后一个弹性项目放置在容器的末尾

Flexbox 网格 - 对齐:围绕空格并对齐最后一个项目

FlexBox 对齐(拉伸)最后一个项目