2014-01-07 109 views
23

我有一個柔性容器justify-content: flex-start。由於柔性物品佔用的空間比容器的尺寸小,因此最終會在右側溢出。我如何設置柔性容器作爲其柔性項目的寬度?

除了在flex-container上設置一個明確的寬度之外,有沒有一種方法可以等效於width: auto來消除溢出?

+0

柔性箱子是非常棘手的...他們仍然有很多工作要走之前,他們實際上是可靠的。但是,這個鏈接可以幫助:https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Flexible_boxes – BuddhistBeast

+0

嗯......你可以[顯示演示](http://jsfiddle.net) ? – Passerby

+0

你說的是「溢出」和「更少空間」,但你可能意味着「下溢」和「更少空間」或「溢出」和「更多空間」。澄清你的問題 – 2014-01-08 04:03:55

回答

0

不知道你的問題,而是:

DEMOhttp://jsfiddle.net/jn45P/

你只需要能夠在柔性項目的靈活性,利用flex-grow:1;填滿空間

<div class="o"> 
    <div>a</div><div>a</div><div>a</div><div>a</div><div>a</div> 
</div> 

<div class="o flex"> 
    <div>a</div><div>a</div><div>a</div><div>a</div><div>a</div> 
</div> 

div.o 
{ 
    border:2px red solid; 
    padding:2px; 
    width:500px; 
    flex-direction:row; 
    display:flex; 
    justify-content:flex-start; 
} 

div.o > div 
    {border:2px red solid;margin:2px;} 

div.o.flex > div 
    {flex:1 1 auto;} /* enable flexibility on the flex-items */ 
+2

調整項目的大小以適應容器,而不是其他方式。 – BoltClock

25

如果你的意思是你想讓容器成爲物品的寬度,而不是擴展到容器寬度的物品......

您可以通過改變display:flexdisplay:inline-flex

+2

'inline-flex'在我的情況下並沒有幫助,實際上,它應該如何?這不是不可能的嗎?就像當你爲容器設置'inline-block'和爲內部塊項目設置'width:100%'時,容器不會調整到'max-width',而是容器和項目將保持儘可能小的寬度。 Flexbox的工作原理是否類似? – Senthe

+0

很遺憾,W3C規範沒有涉及到它...... – Senthe

0

吃出正如Mahks,你可以make the flex container inline建議。但是,如果將它內聯放置不適合您的佈局,則另一種方法是浮動柔性容器(而不是柔性項目)。

Floats將收縮包裝以適應其內容,這對於塊級Flex容器來說沒有什麼不同。內聯級柔性容器在佈局在其父級內聯格式化上下文中時的行爲與inline-block box類似,這意味着默認情況下它也會縮小以適應其內容。

+0

如果您支持較舊的Firefox瀏覽器,則使用浮點數將導致「壞事」(tm)發生(請參閱:https://bugzilla.mozilla.org/show_bug.cgi?id = 660699) – cimmanon

相關問題