2017-03-17 16 views
1

私はフレックスボックスレイアウトを持っています。 .outer-2の幅を子の幅にして、.outer-1outer-3の残りの部分を占めたいとします。フレックス - 子供の親の幅を作る?

どうすればこの問題を解決できますか?

JSFiddle

.container { 
 
    display: flex; 
 
} 
 

 
.outer-1 { 
 
    background: red; 
 
    height: 100px; 
 
    flex: 1; 
 
} 
 

 
.outer-2 { 
 
    display: flex; 
 
    flex: 1; 
 
} 
 

 
.outer-3 { 
 
    background: blue; 
 
    height: 100px; 
 
    flex: 1; 
 
} 
 

 
.inner { 
 
    flex-basis: 30px; 
 
    background: green; 
 
    height: 100px; 
 
    margin: 0 3px; 
 
}
<div class="container"> 
 
    <div class="outer-1"> 
 
    </div> 
 
    <div class="outer-2"> 
 
    <div class="inner"> 
 
    </div> 
 
    <div class="inner"> 
 
    </div> 
 
    <div class="inner"> 
 
    </div> 
 
    </div> 
 
    <div class="outer-3"> 
 
    </div> 
 
</div>

+0

それはあなたが望んでいますか? [フィドル](https://jsfiddle.net/Muhammad_Usman/v8tgyvbd/1/) –

+0

ムハンマド・ウスマン - ほとんどあなたの例ではフレックスベースは効果がありませんが、 – panthro

+0

CSSグリッドを使用していますか?このレイアウトはそれで簡単かもしれません。 –

答えて

2

あなたはその親に合わせて成長しているから、それを防ぐcontainerの第二子のためのフレックスプロパティを変更する必要があります。それで、各.inner要素に幅または分の幅を追加すると、親がそれらを折り畳まないようになります。

.container{ 
 
    display: flex; 
 
} 
 
.outer-1{ 
 
    background: red; 
 
    height: 100px; 
 
    flex: 1; 
 
} 
 
.outer-2{ 
 
    display: flex; 
 
    flex: 1; 
 
} 
 
.outer-3{ 
 
    background: blue; 
 
    height: 100px; 
 
    flex: 1; 
 
} 
 
.inner{ 
 
    width: 30px; 
 
    flex: 1 0 30px; 
 
    background: green; 
 
    height: 100px; 
 
    margin: 0 3px; 
 
}
<div class="container"> 
 
    <div class="outer-1"> 
 
    
 
    </div> 
 
    <div class="outer-2"> 
 
     <div class="inner"> 
 
    
 
     </div> 
 
     <div class="inner"> 
 
    
 
     </div> 
 
     <div class="inner"> 
 
    
 
     </div> 
 
    </div> 
 
    <div class="outer-3"> 
 
    
 
    </div> 
 
</div>

+0

ありがとうございますが、あなたの設定の最小幅はフレックスを使用していません。 – panthro

+0

'.inner'要素で何ができると思いますか? – chazsolo

+0

flex要素を使って内部要素の幅を30pxに設定したい。 outer-2の幅は、その子の幅になります。 – panthro

関連する問題