簡體   English   中英

Flexbox 不是全寬

[英]Flexbox not full width

我有一個像這樣的基本彈性盒..

 .masonry_container { display: flex; } .masonry_left_col { border: 1px solid grey; } .masonry_right_col { border: 1px solid grey; }
 <div class="masonry_container"> <div class="masonry_left_col"> Content </div> <div class="masonry_right_col"> Content </div> </div>

為什么它沒有延伸到整個寬度?

我知道這可能真的很簡單,但我無法解決,我哪里出錯了?

容器實際上100% 寬,即跨越窗口的整個寬度。 但是使用默認的 flex 設置,它的子元素將簡單地向左對齊,並且僅與它們的內容一樣寬。

但是,如果你應用flex-grow: 1; 到子元素以使它們變得更寬,它們將拉伸並填充容器的整個寬度。

 .masonry_container { display: flex; } .masonry_left_col { border: 1px solid grey; flex-grow: 1; } .masonry_right_col { border: 1px solid grey; flex-grow: 1; }
 <div class="masonry_container"> <div class="masonry_left_col"> Content </div> <div class="masonry_right_col"> Content </div> </div>

或者,如果您只想讓 flex 項目在容器內完全左右移動而不拉伸,請將justify-content: space-between添加到容器中

 .masonry_container { display: flex; justify-content: space-between; } .masonry_left_col { border: 1px solid grey; } .masonry_right_col { border: 1px solid grey; }
 <div class="masonry_container"> <div class="masonry_left_col"> Content </div> <div class="masonry_right_col"> Content </div> </div>

flex 容器確實擴展了整個寬度——它是一個塊級元素。

 .masonry_container { display: flex; border: 1px solid red; } .masonry_container > div { border: 1px solid grey; background-color: lightgreen; }
 <div class="masonry_container"> <div class="masonry_left_col">Content</div> <div class="masonry_right_col">Content</div> </div>

但是彈性項目有兩個阻止自動擴展的默認設置:

這意味着項目占用其內容的長度並且不占用可用空間。

對於要擴展的項目,您需要覆蓋flex-grow默認值。

 .masonry_container { display: flex; border: 1px solid red; } .masonry_container > div { flex-grow: 1; border: 1px solid grey; background-color: lightgreen; }
 <div class="masonry_container"> <div class="masonry_left_col">Content</div> <div class="masonry_right_col">Content</div> </div>

您可以指定您希望您的 flex 孩子grow的范圍。 如果您希望每個項目共享相同的寬度,只需為兩個孩子設置flex-grow: 1即可。

 .masonry_container { display:flex; } .masonry_left_col { border:1px solid grey; flex-grow: 1; /* 33% width relative to right column */ } .masonry_right_col { border:1px solid grey; flex-grow: 2; /* 66% width relative to left column */ }
 <div class="masonry_container"> <div class="masonry_left_col"> Content </div> <div class="masonry_right_col"> Content </div> </div>

另請查看容器

這應該是容器流體(因此 flex 容器的父級將跨越 100%)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM