使用 Flexbox 將元素左對齊和居中對齊
P粉545682500
2023-08-27 21:54:23
<p>我正在使用 Flexbox 來對齊我的子元素。我想做的是將一個元素居中,並使另一個元素靠左對齊。通常我會使用 <code>margin-right: auto</code> 設定左側元素。問題在於將中心元素推離中心。如果不使用絕對定位,這可能嗎? </p>
<p><strong>HTML 與 CSS</strong></p>
<p><br /></p>
<pre class="brush:css;toolbar:false;">#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;
}</pre>
<pre class="brush:html;toolbar:false;"><div id="parent">
<span id="left">Left</span>
<span id="center">Center</span>
</div></pre>
<p><br /></p>
新增第三個空元素:
以及以下樣式:
只有左翼和右翼會成長,並且由於以下事實......
...中心元素將始終完美居中。
在我看來,這比接受的答案要好得多,因為您不必將左側內容複製到右側並隱藏它以獲得兩側相同的寬度,它只是神奇地發生 (flexbox 很神奇)。
實際操作:
編輯:請參閱下面的Solo 的答案,這是更好的解決方案。
flexbox 背後的想法是提供一個框架,用於輕鬆對齊容器內具有可變尺寸的元素。因此,提供一個完全忽略一個元素寬度的佈局是沒有意義的。從本質上講,這正是絕對定位的用途,因為它將元素從正常流中取出。
據我所知,如果不使用
position:absolute;
就沒有什麼好的方法可以做到這一點,所以我建議使用它......但如果你真的不想這樣做,或者無法使用絕對定位,那麼我想您可以使用以下解決方法之一。如果您知道「左」div 的確切寬度,那麼您可以將
justify-content
更改為flex-start
(左),然後像這樣對齊“居中”div:如果您不知道寬度,那麼您可以在右側複製“Left”,使用
justify-content: space- Between;
,然後隱藏新的右側元素: 需要明確的是,這真的非常難看...使用絕對定位比複製內容更好。 :-)