我正在使用 flexbox 来对齐我的子元素。我想做的是将一个元素居中,让另一个元素与最左边对齐。通常我只会使用 margin-right: auto
设置左侧元素。问题是将中心元素推离中心。 如果不 使用绝对定位,这可能吗?
HTML & CSS
#parent {
align-items: center;
border: 1px solid black;
display: flex;
justify-content: center;
margin: 0 auto;
width: 500px;
}
#left {
margin-right: auto;
}
#center {
margin: auto;
}
<div id="parent">
<span id="left">Left</span>
<span id="center">Center</span>
</div>
原文由 Carl Edwards 发布,翻译遵循 CC BY-SA 4.0 许可协议
编辑: 请参阅下面 Solo 的回答,这是更好的解决方案。
flexbox 背后的想法是提供一个框架,以便在容器中轻松对齐具有可变尺寸的元素。因此,提供一个完全忽略一个元素宽度的布局是没有意义的。本质上,这正是绝对定位的目的,因为它将元素从正常流中移除。
据我所知,如果不使用
position: absolute;
就没有好的方法,所以我建议使用它……但是如果你真的不想,或者不能使用绝对定位那么我想您可以使用以下解决方法之一。如果您知道“左”div 的确切宽度,那么您可以将
justify-content
更改为flex-start
(左),然后像这样对齐“中心”div:如果您不知道宽度,那么您可以在右侧复制“Left”,使用
justify-content: space-between;
,并隐藏新的右侧元素: 明确地说,这真的非常丑陋……最好使用绝对定位而不是复制内容。 :-)