Caution

お使いのブラウザはJavaScriptが実行できない状態になっております。
当サイトはWebプログラミングの情報サイトの為、
JavaScriptが実行できない環境では正しいコンテンツが提供出来ません。
JavaScriptが実行可能な状態でご閲覧頂くようお願い申し上げます。

CSSプロパティ辞典

flex-basis

フレックスアイテムの基本サイズ(伸縮の計算基準となるサイズ)を指定します。『flex-grow』や『flex-shrink』による伸縮の前のサイズを決定します。

サンプルコード
/* 内容に基づく自動サイズ(初期値) */
.item { flex-basis: auto;}

/* 固定幅を指定 */
.item-fixed { flex-basis: 200px;}

/* パーセンテージで指定 */
.item-percent { flex-basis: 33.333%;}

/* 基本サイズを0にする(flex-growで均等分配する場合) */
.item-zero { flex-basis: 0;}
指定可能な値一覧
概要
autoアイテムの『width』(または『height』)の値を使います。それも指定されていない場合は内容に基づくサイズになります。初期値です。
<length>px、em、remなどの長さの値で指定します。
<percentage>コンテナの主軸方向のサイズに対するパーセンテージで指定します。
0基本サイズを0にします。『flex-grow』で余白を均等に分配する際に使います。
contentアイテムの内容に基づいたサイズにします。
仕様情報
項目内容
初期値auto
適用対象フレックスアイテム
継承しない
アニメーション可能(length/percentage として補間。ただし『auto』との間は不可)
対応ブラウザ
Chrome Chrome
29 以降
28
27
26
25
24
23
22
↑ prefix『-webkit-』が必要
21 以前 ×
Firefox Firefox
22 以降
21 以前 ×
Safari Safari
9 以降
8
7
↑ prefix『-webkit-』が必要
6 以前 ×
Edge Edge
12 以降
全バージョンで対応しています
IE IE
11
10 ×
9 ×
8 ×
7 ×
6 ×
Opera Opera
12.1 以降
11 以前 ×
iOS Safari iOS Safari
9 以降
8
7
↑ prefix『-webkit-』が必要
6 以前 ×
Android Android Browser
4.4 以降
3 以前 ×
Chrome Android Chrome Android
最新版
デスクトップ版と同等の対応です
Firefox Android Firefox Android
最新版
デスクトップ版と同等の対応です

※ バージョン情報は MDN / Can I Use に基づいています。

概要

『flex-basis』はフレックスアイテムに指定するプロパティで、『flex-grow』や『flex-shrink』による伸縮が行われる前の基本サイズを指定します。『flex-direction: row』の場合は幅、『column』の場合は高さに対応します。

『flex-basis』と『width』の違い

flex-basis: auto — 内容に基づくサイズ 長いテキスト 短い 中くらい flex-basis: 200px — 固定の基本サイズ A (200px) B (200px) C (200px) flex-basis: 0 + flex-grow: 1 — 完全均等幅

A(均等) B(均等) C(均等)

フレックスアイテムでは『flex-basis』と『width』(または『height』)の両方が指定できますが、『flex-basis』が優先されます(『auto』を除く)。

指定結果
flex-basis: auto; width: 200px;widthの200pxが使われます。
flex-basis: 300px; width: 200px;flex-basisの300pxが使われます。
flex-basis: 0; width: 200px;flex-basisの0が使われます。

フレックスアイテムのサイズ指定には、『width』よりも『flex-basis』(またはショートハンドの『flex』)を使うのが適切です。

パターン1: 均等幅のアイテム

flex-basis: auto — 内容に応じて幅が変わる 長いテキストのアイテム 短い 中くらいのテキスト flex-basis: 0 + flex-grow: 1 — 完全均等 長いテキスト... 短い 中くらい...

/* flex-basis: 0で余白を完全均等に分配 */
.container { display: flex;}
.item {
    flex-grow: 1;
    flex-basis: 0;
    /* または flex: 1; と書いても同じ */
}

『flex-basis: auto』のままだと、アイテムの内容の長さによってサイズが変わります。『flex-basis: 0』にすると内容に関係なく均等な幅になります。

パターン2: 最低幅付きの可変アイテム

広い画面 — 300px以上に伸長 Card(伸長) Card(伸長) Card(伸長) 狭い画面 — 折り返して最低300pxを確保 Card(basis: 300px → 1行1枚で折り返し)

/* 最低300pxを確保し、余白があれば伸長する */
.card {
    flex: 1 1 300px;  /* grow:1  shrink:1  basis:300px */
}
関連プロパティ
プロパティ概要
flex-grow伸長係数を指定します。『flex-basis』のサイズからどれだけ伸長するかを制御します。
flex-shrink縮小係数を指定します。『flex-basis』のサイズからどれだけ縮小するかを制御します。
flex『flex-grow』『flex-shrink』『flex-basis』の一括指定(ショートハンド)です。個別指定より『flex』の使用が推奨されています。

記事の間違いや著作権の侵害等ございましたらお手数ですがまでご連絡頂ければ幸いです。