2017-09-05 52 views
2

我有3個垂直堆放在容器中的div。我想讓中間div居中,但儘可能多地繼續水平擴展,但小於最大寬度。就像普通的div將不帶flexbox的max-width一樣。如何在使用Flexbox列時從collapsing保持居中div與最大寬度?

https://codepen.io/anon/pen/XaQXOW

CSS

.cont { 
    display: flex; 
    flex-direction: column; 
} 

.b { 
    max-width: 500px; 
    background-color: cyan; 
} 
.a, .b, .c { 
    border: 1px solid #000; 
    height: 100px; 
} 

HTML

<div class="cont"> 
    <div class="a"></div> 
    <div class="b"></div> 
    <div class="c"></div> 
</div> 
+0

是什麼喜歡這個? https://codepen.io/anon/pen/OjGNLE –

+0

你試過'.b {background-color:cyan; max-width:500px; align-self:center;寬度:100%; }'? – Huelfe

+0

你定義了寬度,我希望寬度是自動的,因爲如果它是合同,它會擴大,如果它可以擴大,但也可以尊重最大寬度並居中 –

回答

3

設置align-self: center;居中的DIV,並添加width: 100%

.cont { 
 
    display: flex; 
 
    flex-direction: column; 
 
} 
 

 
.b { 
 
    max-width: 500px; 
 
    background-color: cyan; 
 
    align-self: center; 
 
    width: 100%; 
 
    box-sizing: border-box; 
 
} 
 

 
.a, .b, .c { 
 
    border: 1px solid #000; 
 
    height: 100px; 
 
}
<div class="cont"> 
 
    <div class="a"></div> 
 
    <div class="b"></div> 
 
    <div class="c"></div> 
 
</div>

+1

OMG謝謝..我已經在它的2小時。 –

+0

不客氣! :)請注意'box-sizing:border-box;'修復了寬度和邊框的問題。 – Huelfe

2

您可能需要使用利潤率左和利潤率右並將它們自動

JSFIDDLE

HTML

<div class="cont"> 
<div class="a"></div> 
<div class="b"></div> 
<div class="c"></div> 
</div> 

CSS

.cont { 
display: flex; 
flex-direction: column; 
} 

.b { 
    background-color: cyan; 
    max-width: 500px; 
    margin-left: auto; 
    margin-right: auto; 
    width: 100%; 
} 
.a, .b, .c { 
border: 1px solid #000; 
height: 100px; 
} 
相關問題