css - Flexbox - 如果有 1 个元素居中对齐,如果有 2 个元素则顶部和底部对齐

标签 css flexbox

是否有一种 flexbox 方法可以实现以下目标?

如果 flexbox 中有一项,我想将其垂直居中。

 -------------------
|                   |
|                   |
|one item only      |
|                   |
|                   |
 -------------------

如果有 2 个元素,我希望它们与顶部和底部对齐。

 -------------------
|first item         |
|                   |
|                   |
|second item        |
 -------------------

奖金目标

理想情况下,我意识到这是在插入它,如果有 3 个元素我想将它们对齐到顶部,除了最后一个,它与底部对齐。

 -------------------
|first item         |
|second item        | 
|                   |
|                   | 
|third item         |
 -------------------

最佳答案

margin-top: auto 在这里是正确的:

.flex {
  display: flex;
  flex-direction: column;
  justify-content: center;

  /* for demonstration purposes */
  border: 1px solid black;
  min-height: 200px;
  margin-bottom: 10px;
}

.flex > div:not(:only-child):last-of-type {
  margin-top: auto;
}
<div class="flex">
  <div>one</div>
</div>

<div class="flex">
  <div>one</div>
  <div>two</div>
</div>

<div class="flex">
  <div>one</div>
  <div>two</div>
  <div>three</div>
</div>

关于css - Flexbox - 如果有 1 个元素居中对齐,如果有 2 个元素则顶部和底部对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57294828/

相关文章:

html - 如何使 Flexbox Item 成为超链接?

html - 为什么我的 flex 元素会超出屏幕?

javascript - 嵌套 flex 盒和元素对齐

html - 如何将 max-width 应用于文本 div,但让 div 只扩展到它必须扩展的程度?

html - 在 CSS 中创建背景图案

html - CSS 过渡在 Safari 中不起作用(使用 flexbox 和转换)

jquery - 如果页面处于事件状态,则更改 li 类

html - 如何在CSS中的元素上做透明度渐变?

css - Bootstrap 3 : how do I change the width of 'a' tag exactly like the width of image it contains?

css - 如何在Sharepoint 2010中显示/隐藏功能区和快速启动?