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;
margin-left: auto;
从弹性规范:
主轴中自动边距的一种用途是将弹性项目分成不同的“组”。下面的示例展示了如何使用它来重现常见的 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 项目(或简写)上设置 flex-grow:1 来实现类似的效果,flex:1这会将最后一个项目一直推到右侧。( 演示 )
flex:1
然而,明显的区别是中间项目变得比它可能需要的更大。为弹性项目添加边框以查看差异。
.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>