Flexboxによるレイアウト
CSSによるレイアウト手法のうち、Flexboxを用いた方法を紹介します。
目次
準備
まず、親要素にdisplay: flex;を指定します。
.flexContainer {
display: flex;
}
これでFlexboxが使えるようになります。
このとき、display: flex;を指定した要素を「flexコンテナ」、その子要素を「flexアイテム」と呼びます。
flexアイテムを並べる向き
flex-directionプロパティは、flexコンテナの主軸方向を指定するときに使います。これを使うことで、flexアイテムの配置方向を指定できます。
- row
デフォルト値です。左から右に配置します。 - row-reverse
rowの逆方向、右から左に配置します。 - column
上から下に配置します。 - column-reverse
columnの逆方向、下から上に配置します。
.flexContainer {
flex-direction: row;
}
.flexContainer {
flex-direction: row-reverse;
}
.flexContainer {
flex-direction: column;
}
.flexContainer {
flex-direction: column-reverse;
}
flexアイテムの折り返し
flex-wrapプロパティは、flexアイテムの折り返し方法を指定するときに使います。
- nowrap
デフォルト値です。折り返しません。 - wrap
左から右、上から下に折り返します。 - wrap-reverse
左から右、下から上に折り返します。
.flexContainer {
flex-wrap: nowrap;
}
.flexContainer {
flex-wrap: wrap;
}
.flexContainer {
flex-wrap: wrap-reverse;
}
flexアイテムの揃え位置
justify-contentプロパティは、flexコンテナの主軸方向に沿って、flexアイテムの配置方法を指定します。
主軸方向は、flex-directionプロパティの値によって決まります(デフォルト値では左から右の横方向)。
- flex-start
デフォルト値です。先頭に寄せます。 - flex-end
後ろに寄せます。 - center
中央に寄せます。 - space-between
flexアイテム同士の間に間隔を空けます。 - space-around
flexアイテムの両端に間隔を空けます。
.flexContainer {
justify-content: flex-start;
}
.flexContainer {
justify-content: flex-end;
}
.flexContainer {
justify-content: center;
}
.flexContainer {
justify-content: space-between;
}
.flexContainer {
justify-content: space-around;
}
align-contentプロパティは、flexコンテナの主軸方向に交差する方向に、flexアイテムの配置方法を指定します。
主軸方向は、flex-directionプロパティの値によって決まります(デフォルト値では左から右の横方向)。
なお、このプロパティはflexアイテムが複数行のときのみ効果があります。flexアイテムが一行のときは動きません。
- stretch
デフォルト値です。flexアイテムをコンテナの高さ(もしくは幅)いっぱいに配置します。 - flex-start
先頭に寄せます。 - flex-end
後ろに寄せます。 - center
中央に寄せます。 - space-between
flexアイテム同士の間に間隔を空けます。 - space-around
flexアイテムの両端に間隔を空けます。
.flexContainer {
align-content: stretch;
}
.flexContainer {
align-content: flex-start;
}
.flexContainer {
align-content: flex-end;
}
.flexContainer {
align-content: center;
}
.flexContainer {
align-content: space-between;
}
.flexContainer {
align-content: space-around;
}
align-itemsプロパティは、flexコンテナの主軸方向に交差する方向に、flexアイテムのデフォルトの配置方法を指定します。具体的には、そのflexコンテナ内のすべてのflexアイテムのalign-selfプロパティの値を指定します。
主軸方向は、flex-directionプロパティの値によって決まります(デフォルト値では左から右の横方向)。
- stretch
デフォルト値です。flexアイテムをコンテナの高さ(もしくは幅)いっぱいに配置します。 - flex-start
先頭に寄せます。 - flex-end
後ろに寄せます。 - center
中央に寄せます。 - baseline
flexアイテムのベースラインを合わせて配置します。
.flexContainer {
align-items: stretch;
}
.flexContainer {
align-items: flex-start;
}
.flexContainer {
align-items: flex-end;
}
.flexContainer {
align-items: center;
}
.flexContainer {
align-items: baseline;
}
flexアイテムの並び順
orderプロパティは、flexアイテムの並び順をflexアイテムごとに指定します。flexアイテムは、このプロパティの値の昇順に並びます。
- 0
デフォルト値です。 - <任意の整数値>
正の値、負の値、0のいずれかを指定します。
.flexItem1 {
order: 3;
}
.flexItem2 {
order: 1;
}
.flexItem3 {
order: 4;
}
.flexItem4 {
order: -2;
}
.flexItem5 {
order: 0;
}
.flexItem6 {
order: -4;
}
.flexItem7 {
order: 8;
}
.flexItem8 {
order: 0;
}
flexアイテムごとの配置位置
align-selfプロパティは、align-itemsプロパティの値を上書きして、そのflexアイテムの配置方法を指定します。
- auto
デフォルト値です。そのflexアイテムの親のalign-itemsプロパティの値に従って配置されます。 - stretch
flexアイテムをコンテナの高さ(もしくは幅)いっぱいに配置します。 - flex-start
先頭に寄せます。 - flex-end
後ろに寄せます。 - center
中央に寄せます。 - baseline
flexアイテムのベースラインを合わせて配置します。
.flexContainer {
align-items: stretch;
}
.flexItem4 {
align-self: auto;
}
.flexContainer {
align-items: stretch;
}
.flexItem4 {
align-self: stretch;
}
.flexContainer {
align-items: stretch;
}
.flexItem4 {
align-self: flex-start;
}
.flexContainer {
align-items: stretch;
}
.flexItem4 {
align-self: flex-end;
}
.flexContainer {
align-items: stretch;
}
.flexItem4 {
align-self: center;
}
.flexContainer {
align-items: stretch;
}
.flexItem4 {
align-self: baseline;
}