CSSフレックスボックスで固定幅の列を設定する方法


149

CodePen:http ://codepen.io/anon/pen/RPNpaP 。

サイドバイサイドビューの赤いボックスの幅を25 emだけにしたいのですが、このメディアクエリ内にCSSを設定してこれを実現しようとしています。

@media all and (min-width: 811px) {...}

に:

.flexbox .red {
  width: 25em;
}

しかし、私がそうすると、これが起こります:

http://i.imgur.com/niFBrwt.png

私が間違っていることは何か考えていますか?

回答:


330

ではなく、flexまたはflex-basisプロパティを使用する必要がありますwidthMDNの詳細をご覧ください。

.flexbox .red {
  flex: 0 0 25em;
}

flexCSSプロパティは、利用可能なスペースを埋めるためにその寸法を変更するフレックスアイテムの能力を指定する短縮形プロパティです。を含む:

flex-grow: 0;     /* do not grow   - initial value: 0 */
flex-shrink: 0;   /* do not shrink - initial value: 1 */
flex-basis: 25em; /* width/height  - initial value: auto */

簡単なデモは、最初の列を50px固定幅に設定する方法を示しています。


コードに基づいて更新されたコードペンを参照してください。


21
flex-shrinkおかげでいい答えを上書きする必要があることに気づかなかった。
ポールレドモンド2016

flex-basisを取得できませんでした:コンポーネントライブラリのグリッド(セマンティックUI React)に列のデフォルトの幅を設定する不正なcssルールがあることを認識するまでautoが動作しました😅medium.freecodecamp.org /…
Roman Scher

1

パーセンテージ(%)のレスポンシブフレックスボックスが必要な場合は、メディアクエリの方がはるかに簡単です。

flex-basis: 25%;

これは、テスト時に非常にスムーズになります。

// VARIABLES
$screen-xs:                                         480px;
$screen-sm:                                         768px;
$screen-md:                                         992px;
$screen-lg:                                         1200px;
$screen-xl:                                         1400px;
$screen-xxl:                                        1600px;

// QUERIES
@media screen (max-width: $screen-lg) {
    flex-basis: 25%;
}

@media screen (max-width: $screen-md) {
    flex-basis: 33.33%;
}
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.