私は左と右の列が固定幅を持ち、利用可能なスペースを埋めるために中央の列が曲がる3つの列を持つフレックスボックスレイアウトを設定しようとしています。
列の寸法を設定したにもかかわらず、ウィンドウが縮小すると、それらはまだ縮小しているように見えます。
誰もがこれを達成する方法を知っていますか?
ユーザーの操作に基づいて右側の列を非表示にすることもできます。この場合、左側の列は依然として固定幅を維持しますが、中央の列は残りのスペースを埋めます。
#container {
display: flex;
justify-content: space-around;
align-items: stretch;
max-width: 1200px;
}
.column.left {
width: 230px;
}
.column.right {
width: 230px;
border-left: 1px solid #eee;
}
.column.center {
border-left: 1px solid #eee;
}
<div id="container">
<div class="column left">
<p>Anxiety was a blog series that ran in the New York Times Opinion section from January 2012 to July 2013. It featured essays, fiction, and art by a wide range of contributors that explored anxiety from scientific, literary, and artistic perspectives.</p>
</div>
<div class="column center">
<img src="http://i.imgur.com/60PVLis.png" width="100" height="100" alt="">
</div>
<div class="column right">
Balint Zsako
<br/> Someone’s Knocking at My Door
<br/> 01.12.13
</div>
</div>
これがJSFiddleです: http://jsfiddle.net/zDd2g/185/ /
width
を使用する代わりに(これはflexboxを使用するときの提案です)、flex: 0 0 230px;
を使用することができます。
0
=成長しない(flex-grow
の省略形)0
=縮小しない(flex-shrink
の省略形)230px
= 230px
で開始(flex-basis
の省略形)つまり、常に230px
になります。
フィドルを参照 、ありがとう@TylerH
ああ、そしてここではjustify-content
とalign-items
は必要ありません。
列の寸法を設定したにもかかわらず、ウィンドウが縮小すると、それらはまだ縮小しているように見えます。
フレックスコンテナの初期設定は flex-shrink: 1
です。それがあなたのコラムが縮小している理由です。
どの幅を指定しても構いません( width: 10000px
)、flex-shrink
では指定された幅を無視して、フレックスアイテムがコンテナからオーバーフローするのを防ぐことができます。
左右の列の幅が固定されている3列のフレックスボックスを設定しようとしています...
縮小を無効にする必要があります。ここにいくつかのオプションがあります:
.left, .right {
width: 230px;
flex-shrink: 0;
}
OR
.left, .right {
flex-basis: 230px;
flex-shrink: 0;
}
または、仕様で推奨されているように、
.left, .right {
flex: 0 0 230px; /* don't grow, don't shrink, stay fixed at 230px */
}
省略形は 一般的な用途 に対応するために未指定のコンポーネントを正しくリセットするため、作成者は直接の省略形プロパティではなく
flex
省略形を使用して柔軟性を制御することをお勧めします。
詳細はこちら: フレックスベースと幅の違いは何ですか?
ユーザーの操作に基づいて右側の列を非表示にするという追加の作業があります。この場合、左側の列は依然として固定幅を維持しますが、中央の列は残りのスペースを埋めます。
これを試して:
.center { flex: 1; }
これにより、中央の列が削除されたときの兄弟のスペースも含めて、使用可能なスペースを消費することができます。
古いブラウザとの互換性はドラッグすることができますので、進めてください。
それが問題にならない場合は、次に進んでください。スニペットを実行します。フルページビューに移動してサイズを変更します。 Centerは、左または右のdivを変更せずに自分自身のサイズを変更します。
要件を満たすように左右の値を変更します。
ありがとうございました。
お役に立てれば。
#container {
display: flex;
}
.column.left {
width: 100px;
flex: 0 0 100px;
}
.column.right {
width: 100px;
flex: 0 0 100px;
}
.column.center {
flex: 1;
text-align: center;
}
.column.left,
.column.right {
background: orange;
text-align: center;
}
<div id="container">
<div class="column left">this is left</div>
<div class="column center">this is center</div>
<div class="column right">this is right</div>
</div>