https://jsfiddle.net/vhem8scs/

是否有可能有两个项目左对齐和一个项目右对齐与flexbox?链接显示得更清楚。最后一个例子是我想要实现的。

在flexbox中,我只有一个代码块。使用float,我有四个代码块。这也是我偏爱flexbox的原因之一。

HTML

<div class="wrap">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
</div>

<!-- DESIRED RESULT -->

<div class="result">
  <div>One</div>
  <div>Two</div>
  <div>Three</div>
</div>

CSS

.wrap {
  display: flex;
  background: #ccc;
  width: 100%;
  justify-content: space-between;
}

.result {
  background: #ccc;
  margin-top: 20px;
}

.result:after {
  content: '';
  display: table;
  clear: both;
}

.result div {
  float: left;
}
.result div:last-child {
  float: right;
}

要将一个flex子代向右对齐,请设置margin-left: auto;

来自flex规范:

主轴上的自动边距的一个用途是分离伸缩项 分成不同的“组”。下面的例子展示了如何使用它 重现一个通用的UI模式——一个带有一些操作的单条 左对齐,右对齐。

.wrap div:last-child {
  margin-left: auto;
}

更新的小提琴

.wrap { display: flex; background: #ccc; width: 100%; justify-content: space-between; } .wrap div:last-child { margin-left: auto; } .result { background: #ccc; margin-top: 20px; } .result:after { content: ''; display: table; clear: both; } .result div { float: left; } .result div:last-child { float: right; } <div class="wrap"> <div>One</div> <div>Two</div> <div>Three</div> </div> <!-- DESIRED RESULT --> <div class="result"> <div>One</div> <div>Two</div> <div>Three</div> </div>

注意:

您可以通过在中间的伸缩项(或简写flex:1)上设置flex-grow:1来实现类似的效果,这将把最后一项一直推到右边。(演示)

然而,明显的区别是,中间的项目变得比它可能需要的更大。为伸缩项添加边框以查看差异。

Demo

.wrap { display: flex; background: #ccc; width: 100%; justify-content: space-between; } .wrap div { border: 3px solid tomato; } .margin div:last-child { margin-left: auto; } .grow div:nth-child(2) { flex: 1; } .result { background: #ccc; margin-top: 20px; } .result:after { content: ''; display: table; clear: both; } .result div { float: left; } .result div:last-child { float: right; } <div class="wrap margin"> <div>One</div> <div>Two</div> <div>Three</div> </div> <div class="wrap grow"> <div>One</div> <div>Two</div> <div>Three</div> </div> <!-- DESIRED RESULT --> <div class="result"> <div>One</div> <div>Two</div> <div>Three</div> </div>


对于一个简洁、纯粹的flexbox选项,将左对齐的项和右对齐的项分组:

<div class="wrap">
  <div>
    <span>One</span>
    <span>Two</span>
  </div>
  <div>Three</div>
</div>

使用空格:

.wrap {
  display: flex;
  background: #ccc;
  justify-content: space-between;
}

通过这种方式,您可以将多个项目分组到右侧(或只有一个)。

https://jsfiddle.net/c9mkewwv/3/


将一些元素(headerElement)对齐在中间,并将最后一个元素(headerEnd)对齐在右边。

.headerElement {
    margin-right: 5%;
    margin-left: 5%;
}
.headerEnd{
    margin-left: auto;
}

以下是我所做的(与顺风,但它只是CSS):

<nav class="border-b border-black flex">
  <div class="border border-red-600 w-12">Back</div>
  <div class="border border-blue-600 w-12">Logo</div>
  <div class="border border-green-600 flex-grow text-center">Socializus</div>
  <div class="border border-orange-600 w-24">
    <div class="w-12 ml-auto border border-pink-600">Menu</div>
  </div>
</nav>

其原理是,左边和右边的两个部分宽度相同,那么右边的子部分占用的空间更少


你可以任意选择

margin-left: auto;

or

position absolute;
right: 0px;

这将把项目移到右边。你给出的px值将把项目从右边推到左边。