Flexbox justify-content 取决于子项的数量

Posted

技术标签:

【中文标题】Flexbox justify-content 取决于子项的数量【英文标题】:Flexbox justify-content depending on number of children 【发布时间】:2017-03-19 21:10:12 【问题描述】:

有这个:

  <label>
    <button>Create</button>
  </label>

我希望按钮像这样向右对齐

----------------------------
|                   [create]|
----------------------------

虽然有这个:

  <label>
    <button>Delete</button>
    <button>Update</button>
  </label>

我希望按钮在角落里

----------------------------
|[delete]          [update]|
----------------------------

无需向标签添加额外的类。

【问题讨论】:

@NenadVracar 提供了一个完美的答案 IMO。如果您想了解其工作原理,请参见此处:***.com/q/32551291/3597276 【参考方案1】:

您可以在last-child 上使用margin-left: auto,这将产生所需的结果。

label 
  display: flex;
  border-bottom: 1px solid #aaa;
  margin: 20px 0;

label button:last-child 
  margin-left: auto;
<label>
  <button>Create</button>
</label>

<label>
  <button>Delete</button>
  <button>Update</button>
</label>

【讨论】:

【参考方案2】:

你可以只使用标准的 flexbox 属性来做到这一点:

flex-direction: row-reverse - 将项目排成一行,从“末尾”开始(取决于阅读方向) justify-content: space-between - 将物品放在尽可能远的地方

label 
  display: flex;
  flex-direction: row-reverse;
  justify-content: space-between;
<label>
  <button>Create</button>
</label>

<label>
  <button>Delete</button>
  <button>Update</button>
</label>

【讨论】:

我知道这是可能的!【参考方案3】:

您可以使用 CSS Flexbox justify-content 属性来对齐您的元素。

看看这个Codepen

或者查看下面的代码以供参考,我也使用&lt;div&gt;s 代替&lt;label&gt;,就像在.two 中一样,它们都作用于两个按钮。

div 
  display: flex;
  background: #ddd;
  padding: 10px 20px;
  margin-bottom: 10px;


div:first-child 
  justify-content: flex-end;


div:nth-child(2) 
  justify-content: space-between;
<div>
  <button>Create</button>
</div>

<div>
  <button>Delete</button>
  <button>Update</button>
</div>

了解更多关于CSS Flexbox

希望这会有所帮助!

【讨论】:

“不向标签添加额外的类。” @IlyaNovojilov 哦!我的错,我已经更新了我的答案。请看一看。

以上是关于Flexbox justify-content 取决于子项的数量的主要内容,如果未能解决你的问题,请参考以下文章

Flexbox justify-content:中心在 Safari 中无法正常工作

Flexbox justify-content 取决于子项的数量

Flexbox 自动边距不适用于 justify-content: center in IE

IE Flexbox justify-content center 溢出问题

CSS flexbox居中[重复]

如何使用 flexbox 为图像留出边距?