私は4つのフレックスボックス列を持っていて、すべてうまくいきますが、ある列にテキストを追加してそれを大きなフォントサイズに設定すると、flexプロパティのために本来あるべきよりも幅が広くなります。
Word-break: break-Word
を使用しようとしましたが、それでも役に立ちましたが、それでも列の幅を非常に小さい幅に変更しても、テキストの文字が複数行に分割され(1行に1文字)、それでも列の幅は1文字より小さくなりませんサイズ。
これを見てください video (最初は最初の列が一番小さいのですが、ウィンドウをリサイズしたときは一番広い列です。常にフレックス設定を尊重したい、フレックスサイズ1:3: 4:4)
私は知っています、フォントサイズと列のパディングをより小さく設定することは助けになるでしょう...しかし、他の解決策はありますか?
overflow-x: hidden
は使えません。
.container {
display: flex;
width: 100%
}
.col {
min-height: 200px;
padding: 30px;
Word-break: break-Word
}
.col1 {
flex: 1;
background: orange;
font-size: 80px
}
.col2 {
flex: 3;
background: yellow
}
.col3 {
flex: 4;
background: skyblue
}
.col4 {
flex: 4;
background: red
}
<div class="container">
<div class="col col1">Lorem ipsum dolor</div>
<div class="col col2">Lorem ipsum dolor</div>
<div class="col col3">Lorem ipsum dolor</div>
<div class="col col4">Lorem ipsum dolor</div>
</div>
あなたはflexboxのデフォルト設定に遭遇しています。
フレックスアイテムは、主軸に沿ったコンテンツのサイズより小さくすることはできません。
デフォルトは...
min-width: auto
min-height: auto
...それぞれ行方向と列方向のフレックスアイテム用。
フレックスアイテムを次のように設定することで、これらのデフォルトを上書きできます。
min-width: 0
min-height: 0
overflow: hidden
(またはvisible
name__を除く他の任意の値)フレックスアイテムにもっと合理的なデフォルトの最小サイズを提供するために、この仕様はCSS 2.1で定義された
min-width
とmin-height
プロパティの初期値として新しいauto
name__値を導入します。
auto
name__の値について…
主軸の
overflow
name__がvisible
name__であるフレックスアイテムでは、フレックスアイテムの主軸のmin-sizeプロパティで指定すると、自動最小サイズを指定します。それ以外の場合は0
に計算されます。
言い換えると:
min-width: auto
およびmin-height: auto
のデフォルトは、overflow
name__がvisible
name__の場合にのみ適用されます。overflow
name__の値がvisible
name__ではない場合、min-sizeプロパティの値は0
です。overflow: hidden
はmin-width: 0
およびmin-height: 0
の代わりになることができます。そして...
min-height: auto
を取得しません。ネストされたFlexコンテナ
HTML構造の複数レベルのフレックスアイテムを扱う場合は、より高いレベルのアイテムでデフォルトのmin-width: auto
/min-height: auto
をオーバーライドする必要があるかもしれません。
基本的に、min-width: auto
を持つ高レベルのフレックスアイテムは、min-width: 0
でネストされたアイテムの縮小を防ぐことができます。
例:
ChromeとFirefox/Edge
少なくとも2017年以降、Chromeは(1)デフォルトのmin-width: 0
/min-height: 0
に戻すか、(2)謎のアルゴリズムに基づいて特定の状況で自動的に0
デフォルトを適用するように見えます。 (これが 介入 と呼ばれるものかもしれません。)その結果、多くの人がレイアウトを見ています(特に望ましいスクロールバー)。 )Chromeでは期待どおりに動作しますが、Firefox/Edgeでは動作しません。この問題については、ここで詳しく説明します。 FirefoxとChromeのフレックス・シュリンクの相違
IE11
仕様に記載されているように、min-width
およびmin-height
プロパティのauto
name__値は "new"です。つまり、ブラウザによっては、デフォルトで0
値がレンダリングされることがあります。これは、値が更新される前にフレックスレイアウトを実装し、0
が CSS 2.1 のmin-width
およびmin-height
の初期値であるためです。 そのようなブラウザの1つがIE11です。flexbox spec で定義されているように、他のブラウザは新しいauto
name__値に更新されました。
.container {
display: flex;
}
.col {
min-height: 200px;
padding: 30px;
Word-break: break-Word
}
.col1 {
flex: 1;
background: orange;
font-size: 80px;
min-width: 0; /* NEW */
}
.col2 {
flex: 3;
background: yellow
}
.col3 {
flex: 4;
background: skyblue
}
.col4 {
flex: 4;
background: red
}
<div class="container">
<div class="col col1">Lorem ipsum dolor</div>
<div class="col col2">Lorem ipsum dolor</div>
<div class="col col3">Lorem ipsum dolor</div>
<div class="col col4">Lorem ipsum dolor</div>
</div>