FlexBox内にwhite-space:preを入れるとflexが効かない場合の対応
html css flex ratio not working
flexboxを作成
<div class="wrap1"> <div class="box1"> <div class="content"></div> </div> <div class="box2"> <div class="content"></div> </div> <div class="box3"> <div class="content"></div> </div> </div> <style> .wrap1 { display: flex; } .wrap1 > div { height: 50px; } .wrap1 .box1 { width: 50px; background: #F44336; } .wrap1 .box2 { flex: 1; background: #FBC02D; overflow: hidden; } .wrap1 .box3 { width: 50px; background: #BA68C8; } </style>
flexbox内の「flex:1」の要素にpreを追加
preを追加すると、flexboxとしているにもかかわらず、左右にある「赤」「紫」の枠が消えてしまう。
テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト
<div class="wrap2"> <div class="box1"> <div class="box_content"></div> </div> <div class="box2"> <div class="box_content"> <pre> テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト </pre> </div> </div> <div class="box3"> <div class="box_content"></div> </div> </div> <style> .wrap2 { display: flex; overflow: hidden; } .wrap2 > div { height: 50px; } .wrap2 .box1 { width: 50px; background: #F44336; } .wrap2 .box2 { flex: 1; background: #FBC02D; } .wrap2 .box2 .box_content{ overflow: hidden; } .wrap2 .box3 { width: 50px; background: #BA68C8; } </style>
flexbox内の「flex:1」の要素に「min-width: 0」を追加
意図する表示になる。
テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト
<div class="wrap3"> <div class="box1"> <div class="box_content"></div> </div> <div class="box2"> <div class="box_content"> <pre> テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト テキスト </pre> </div> </div> <div class="box3"> <div class="box_content"></div> </div> </div> <style> .wrap3 { display: flex; overflow: hidden; } .wrap3 > div { height: 50px; } .wrap3 .box1 { width: 50px; background: #F44336; } .wrap3 .box2 { flex: 1; min-width: 0; /* min-width: 0を追加 */ background: #FBC02D; } .wrap3 .box2 .box_content{ overflow: hidden; } .wrap3 .box3 { width: 50px; background: #BA68C8; } </style>