Flexboxを理解しましょう!
説明
Flexboxとは
- FlexboxとはFlexible Box Layout Moduleのことで、その名の通りフレキシブルで簡単にレイアウトが組めます。
- 項目の横並びはfloatやinline-blockでもできますがFlexboxを使用すると色々なレイアウトが簡単に出来ます。
参考サイト
基本的な構成
HTML(親子関係が出来ればulなどの他のタグでも可)
<p> Flexコンテナー(親要素)</p>
<div class="container">
<div class="item">Flexアイテム-1(子要素-1)</div>
<div class="item">Flexアイテム-2(子要素-2)</div>
<div class="item">Flexアイテム-3(子要素-3)</div>
</div>
CSS
.container {
display: flex;
padding: 20px;
border: 1px #333 solid;
}
.item {
padding: 20px;
border: 1px #333 solid;
}
表示結果
Flexコンテナー(親要素)
Flexアイテム-1(子要素-1)
Flexアイテム-2(子要素-2)
Flexアイテム-3(子要素-3)
ポイント
- 親要素に「display: flex;」を指定すると子要素が横並びになります。(親要素はblock属性)
- 親要素に「display: inline-flex」を指定すると親要素がinline-block属性になります。
Flexコンテナー(親要素)に指定可能なプロパティ
- flex-direction
-
Flexアイテムの並び順を指定すします。
- row(初期値)
- Flexアイテムを水平方向に左から右へと配置します。
- row-reverse
- Flexアイテムを水平方向に右から左へと配置します。
- column
- Flexアイテムを垂直方向に上から下へと配置します。
- colmn-reverse
- Flexアイテムを垂直方向に下から上へと配置します。
- flex-wrap
-
Flexアイテムの折り返しを指定します。
- nowrap(初期値)
- Flexアイテムを折り返さずに一列に配置します。
- wrap
- 複数行のFlexアイテムを上から下へと配置します。
- wrap-reverse
- 複数行のFlexアイテムを下から上へと配置します。
- flex-flow
-
flex-directionとflex-wrapを一括で指定します。
flex-flow: (flex-directionの値) (flex-wrapの値);
- justify-content
-
Flexアイテムの水平方向の位置を指定します。
- flex-start(初期値)
- Flexアイテムを左揃えで配置します。
- flex-end
- Flexアイテムを右揃えで配置します。
- center
- Flexアイテムを左右中央揃えで配置します。
- space-between
- 両端のFlexアイテムを余白を空けずに配置し他の要素は均等に間隔を空けて配置します。
- space-around
- 両端のFlexアイテムも含めて均等な間隔を空けて配置します。
- align-items
-
Flexアイテムの垂直方向の位置を指定します。
- stretch(初期値)
- Flexアイテムを上下の余白を埋めるように配置します。
- flex-start
- Flexアイテムを上揃えで配置します。
- flex-end
- Flexアイテムを下揃えで配置します。
- center
- Flexアイテムを上下中央揃えで配置します。
- baseline
- Flexアイテムをベースラインに合わせて配置します。
- align-content
-
Flexアイテムの行の垂直方向の位置を指定します。
- stretch(初期値)
- Flexアイテムの行を余白を埋めるように配置します。
- flex-start
- Flexアイテムの行を上揃えで配置します。
- flex-end
- Flexアイテムの行を下揃えで配置します。
- center
- Flexアイテムの行を上下中央揃えで配置します。
- pace-between
- 最上行と最下行のFlexアイテムを余白を空けずに配置し他のアイテム行は均等に間隔を空けて配置します。
- space-around
- すべてのFlexアイテム行が均等に間隔を空けて配置します。
Flexアイテム(子要素)に指定可能なプロパティ
- order
-
Flexアイテムの並び順を指定します。
- (数値)
- Flexアイテム(子要素)の順番をマイナスを含む数値で指定します。(初期値は0)
- flex-grow
-
Flexアイテムの伸び率を指定します。
- (数値)
- Flexコンテナー(親要素)に横方向の余白がある時にFlexアイテム(子要素)を伸ばす比率を数値で指定します。(初期値は0でマイナス値は無効)
- flex-shrink
-
Flexアイテムの縮み率を指定します。
- (数値)
- Flexアイテム(子要素)の横方向の合計がFlexコンテナー(親要素)に入りきらない時にFlexアイテム(子要素)をし縮める比率を数値で指定します。(初期値は1でマイナス値は無効)
- flex-basis
-
Flexアイテムのベースの幅を指定します。
- (百分率)
- Flexアイテム(子要素)の幅を百分率(%)で指定します。(初期値はauto)
- flex
-
orderとflex-growとflex-shrinkを一括で指定します。
flex: (orderの値) (flex-growの値) (flex-shrinkの値);
- align-self
-
Flexアイテムの垂直方向の位置を指定します。Flexコンテナー(親要素)に余白がなければ、どれを指定しても表示は変わりません。Flexコンテナー(親要素)にalign-itemsを指定することで垂直方向の位置を指定することもできますがFlexアイテムにalign-selfが指定されているとこちらが優先されます。
- auto(初期値)
- Flexコンテナー(親要素)のalign-itemsの値を使用します。
- stretch
- Flexアイテムを上下の余白を埋めるように配置します。
- flex-start
- Flexアイテムを上揃えで配置します。
- flex-end
- Flexアイテムを下揃えで配置します。
- center
- Flexアイテムを中央揃えで配置します。
- baseline
- Flexアイテムをベースラインに合わせて配置します。
注意事項
- Flexboxでは垂直方向の位置を指定するvertical-alignを使用できません。Flexコンテナー(親要素)のalign-itemsやFlexアイテム(子要素)のalign-selfを使用します。
- Flexboxのメリットは、「①CSSがシンプルな記述で済む、②垂直方向の位置を柔軟に調整できる、③CSSだけで並び順や折り返しを簡単に調整できる」などがあります。
display: flex; と display: inline-flex;
display: flex;
display: inline-flex;
Flexコンテナー(親要素)に指定可能なプロパティ
flex-direction
Flexアイテムの並び順を指定すします。
- row(初期値)
- Flexアイテムを水平方向に左から右へと配置します。
- row-reverse
- Flexアイテムを水平方向に右から左へと配置します。
- column
- Flexアイテムを垂直方向に上から下へと配置します。
- colmn-reverse
- Flexアイテムを垂直方向に下から上へと配置します。
flex-direction: row;(初期値)
flex-direction: row-reverse;
flex-direction: column;
flex-direction: column-reverse;
flex-wrap
Flexアイテムの折り返しを指定します。
- nowrap(初期値)
- Flexアイテムを折り返さずに一列に配置します。
- wrap
- 複数行のFlexアイテムを上から下へと配置します。
- wrap-reverse
- 複数行のFlexアイテムを下から上へと配置します。
flex-wrap: nowrap;(初期値)
子要素-1
子要素-2
子要素-3
子要素-4
子要素-5
子要素-6
子要素-7
子要素-8
子要素-9
子要素-10
子要素-11
子要素-12
flex-wrap: wrap;
子要素-1
子要素-2
子要素-3
子要素-4
子要素-5
子要素-6
子要素-7
子要素-8
子要素-9
子要素-10
子要素-11
子要素-12
flex-wrap: wrap-reverse;
子要素-1
子要素-2
子要素-3
子要素-4
子要素-5
子要素-6
子要素-7
子要素-8
子要素-9
子要素-10
子要素-11
子要素-12
flex-flow
flex-directionとflex-wrapを一括で指定します。
flex-flow: (flex-directionの値) (flex-wrapの値);
justify-content
Flexアイテムの水平方向の位置を指定します。
- flex-start(初期値)
- Flexアイテムを左揃えで配置します。
- flex-end
- Flexアイテムを右揃えで配置します。
- center
- Flexアイテムを左右中央揃えで配置します。
- space-between
- 両端のFlexアイテムを余白を空けずに配置し他の要素は均等に間隔を空けて配置します。
- space-around
- 両端のFlexアイテムも含めて均等な間隔を空けて配置します。
justify-content: flex-start;(初期値)
justify-content: flex-end;
justify-content: center;
justify-content: space-between;
justify-content: space-around;
align-items
Flexアイテムの垂直方向の位置を指定します。
- stretch(初期値)
- Flexアイテムを上下の余白を埋めるように配置します。
- flex-start
- Flexアイテムを上揃えで配置します。
- flex-end
- Flexアイテムを下揃えで配置します。
- center
- Flexアイテムを上下中央揃えで配置します。
- baseline
- Flexアイテムをベースラインに合わせて配置します。
align-items: stretch;(初期値)
align-items: flex-start;
align-items: flex-end;
align-items: center;
align-items: baseline;
align-content
Flexアイテムの行の垂直方向の位置を指定します。
- stretch(初期値)
- Flexアイテムの行を余白を埋めるように配置します。
- flex-start
- Flexアイテムの行を上揃えで配置します。
- flex-end
- Flexアイテムの行を下揃えで配置します。
- center
- Flexアイテムの行を上下中央揃えで配置します。
- space-between
- 最上行と最下行のFlexアイテムを余白を空けずに配置し他のアイテム行は均等に間隔を空けて配置します。
- space-around
- すべてのFlexアイテム行が均等に間隔を空けて配置します。
align-content: stretch;(初期値)
子要素-1
子要素-2
子要素-3
子要素-4
子要素-5
子要素-6
子要素-7
子要素-8
子要素-9
align-content: flex-start;
子要素-1
子要素-2
子要素-3
子要素-4
子要素-5
子要素-6
子要素-7
子要素-8
子要素-9
align-content: flex-end;
子要素-1
子要素-2
子要素-3
子要素-4
子要素-5
子要素-6
子要素-7
子要素-8
子要素-9
align-content: center;
子要素-1
子要素-2
子要素-3
子要素-4
子要素-5
子要素-6
子要素-7
子要素-8
子要素-9
align-content: space-between;
子要素-1
子要素-2
子要素-3
子要素-4
子要素-5
子要素-6
子要素-7
子要素-8
子要素-9
align-content: space-around;
子要素-1
子要素-2
子要素-3
子要素-4
子要素-5
子要素-6
子要素-7
子要素-8
子要素-9
Flexアイテム(子要素)に指定可能なプロパティ
order
Flexアイテムの並び順を指定します。
- (数値)
- Flexアイテム(子要素)の順番をマイナスを含む数値で指定します。(初期値は0)
order: (数値);
子要素-1:order: 4;
子要素-2:order: 2;
子要素-3:order: 1;
子要素-4:order: 3;
flex-grow
Flexアイテムの伸び率を指定します。
- (数値)
- Flexコンテナー(親要素)に横方向の余白がある時にFlexアイテム(子要素)を伸ばす比率を数値で指定します。(初期値は0でマイナス値は無効)
flex-grow: (数値);
flex-grow指定なし
子要素-1:flex-grow: 4;
子要素-2:flex-grow: 2;
子要素-3:flex-grow: 1;
子要素-4:flex-grow: 2;
flex-shrink
Flexアイテムの縮み率を指定します。
- (数値)
- Flexアイテム(子要素)の横方向の合計がFlexコンテナー(親要素)に入りきらない時にFlexアイテム(子要素)を縮める比率を数値で指定します。(初期値は1でマイナス値は無効)
flex-shrink: (数値);
子要素にwidth: 40%;を指定(40% × 4子要素 = 160%)
flex-shrink指定なし
子要素にwidth: 40%;を指定(40% × 4子要素 = 160%)
子要素-1:flex-shrink: 4;
子要素-2:flex-shrink: 2;
子要素-3:flex-shrink: 1;
子要素-4:flex-shrink: 2;
flex-basis
Flexアイテムのベースの幅を指定します。
- (百分率)
- Flexアイテム(子要素)の幅を百分率(%)で指定します。(初期値はauto)
flex-basis: (百分率);
子要素-1:flex-basis: 50%;
子要素-2:flex-basis: 20%;
子要素-3:flex-basis: 15%;
子要素-4:flex-basis: 15%;
flex
orderとflex-growとflex-shrinkを一括で指定します。
flex: (orderの値) (flex-growの値) (flex-shrinkの値);
align-self
Flexアイテムの垂直方向の位置を指定します。Flexコンテナー(親要素)に余白がなければ、どれを指定しても表示は変わりません。Flexコンテナー(親要素)にalign-itemsを指定することで垂直方向の位置を指定することもできますがFlexアイテムにalign-selfが指定されているとこちらが優先されます。
- auto(初期値)
- Flexコンテナー(親要素)のalign-itemsの値を使用します。
- stretch
- Flexアイテムを上下の余白を埋めるように配置します。
- flex-start
- Flexアイテムを上揃えで配置します。
- flex-end
- Flexアイテムを下揃えで配置します。
- center
- Flexアイテムを中央揃えで配置します。
- baseline
- Flexアイテムをベースラインに合わせて配置します。
align-self: auto;、stretch;、flex-start;、flex-end;、center;、baseline;
子要素-1:align-self: auto;
子要素-2:align-self: stretch;
子要素-3:align-self: flex-start;
子要素-4:align-self: flex-end;
子要素-5:align-self: center;
子要素-6:align-self: baseline;
子要素-7:align-self: baseline;(font-size: 200%;)
子要素-1
子要素-2
子要素-3
子要素-4
子要素-5
子要素-6
子要素-7
サンプル:一般的なWebサイト
ワイヤーフレーム
- 一般的な企業サイトのフォーマットを想定します。
- 項目はdivタグでマークアップしFlexboxを使用して配置します。
表示形式
商品情報
シーサーの飾り物
沖縄のシーサーの飾り物です。シーサーは沖縄県などで伝説の獣像で魔除けの意味を持ち屋根の上に設置されることが多いとされています。今回の商品はシーサーをベースにした飾り物で部屋の中に飾ることで魔除けとしても使えるかもしれません。
インディアンの飾り物
アメリカの先住民であるインディアンが作成した飾り物です。この飾り物はアメリカのグランドキャニオンを拠点とするインディアンが作成しました。作成したインディアンの話ではインディアンが信仰する大地の神が宿っているとのことです。