2017-01-10 21 views
6

flexboxは、2つの列で固定します。左側は固定幅で、右側はページサイズが変更されると縮尺されます。たとえば、:固定列幅が1つのFlexbox

<style> 
    .flex_container { 
     display: flex; 
     width: 100%; 
    } 

    .flex_col_left { 
     width: 200px; 
    } 
    .flex_col_right { 
     width: 85%; 
    } 
</style> 

<div class = "flex_container"> 
    <div class = "flex_col_left"> 
     ..... 
    </div> 
    <div class = "flex_col_right"> 
     ..... 
    </div> 
<div> 

これはある程度機能しますが、pxと%を混在させているように感じることはありません。このようにするのは間違っていますか?もしそうなら、もっと良い解決策がありますか?

EDITクラスの名前付けの問題は、タイプミスで修正されました。

答えて

9

右の列の幅を%に設定する代わりに、flex: 1を使用すると、残りの幅が残りの行に残ります。

.flex_container { 
 
    display: flex; 
 
    width: 100%; 
 
} 
 
.flex_item_left { 
 
    width: 200px; 
 
    background: lightgreen; 
 
} 
 
.flex_item_right { 
 
    flex: 1; 
 
    background: lightblue; 
 
}
<div class="flex_container"> 
 
    <div class="flex_item_left"> 
 
    ..... 
 
    </div> 
 
    <div class="flex_item_right"> 
 
    ..... 
 
    </div> 
 
    <div>

+0

パーフェクト - 感謝。そして、これはIE11でも正しく表示されない問題を修正します。素晴らしい! – RGriffiths

+0

あなたは大歓迎です。 –

+0

これを古いFlexbox仕様(私の場合はAndroid 4.3のブラウザ)で動作させようとする人にとっては、 'flex:1'の代わりに' -webkit-box-flex:1'を使用する必要がありますその他いくつかの変更点)、例:https://www.w3schools.com/code/tryit.asp?filename=FOTB9PW8ZJ8X –

0

あなたはそれを成長させるために、非固定幅の要素にflex-grow: 1を使用することができます(なし幅の設定)。

.flex_container { 
 
    display: flex; 
 
    width: 100%; 
 
} 
 
.flex_item_left { 
 
    width: 200px; 
 
    background: #fa0; 
 
} 
 
.flex_item_right { 
 
    background: #0fa; 
 
    flex-grow: 1; 
 
}
<div class="flex_container"> 
 
    <div class="flex_item_left"> 
 
    ..... 
 
    </div> 
 
    <div class="flex_item_right"> 
 
    ..... 
 
    </div> 
 
    <div>

関連する問題