CSS Flexboxは、柔軟なレイアウトを実現するためのCSSレイアウトモジュールで、複雑なレイアウトでも少ないコードでシンプルに実装できます。この記事では、CSS Flexboxの基礎知識、各プロパティの機能、そしてFlexboxを使ったレイアウトの具体例を詳しく解説します。
CSS Flexboxの基礎
Flexboxは、親要素であるflexコンテナとその中の子要素であるflexアイテムで構成されています。Flexboxの基本概念を理解することが、効果的なレイアウト作成の鍵です。
Flexboxのブラウザサポート
以下の主要なブラウザでサポートされています:
- Chrome 29+
- Firefox 28+
- Safari 9+
- Edge 12+
- IE 11+
Flexコンテナのプロパティ
flex-direction
flex-direction
プロパティは、flexアイテムの配置方向を設定します。以下の値が利用可能です:
row
:デフォルト。アイテムを水平方向に配置。row-reverse
:水平方向に逆順で配置。column
:垂直方向に配置。column-reverse
:垂直方向に逆順で配置。
.flex-container {
flex-direction: row;
}
flex-wrap
flex-wrap
プロパティは、flexアイテムを単一行または複数行に配置するかを指定します。
nowrap
:デフォルト。単一行に配置。wrap
:複数行に配置。wrap-reverse
:複数行に逆順で配置。
.flex-container {
flex-wrap: nowrap;
}
flex-flow
flex-flow
プロパティは、flex-direction
とflex-wrap
をまとめて設定するショートハンドです。
.flex-container {
flex-flow: row nowrap;
}
justify-content
justify-content
プロパティは、主軸に沿ってアイテムを配置します。
flex-start
:デフォルト。アイテムを先頭に寄せて配置。flex-end
:アイテムを後尾に寄せて配置。center
:アイテムを中央に配置。space-between
:先頭と後尾は端に、他は等間隔に配置。space-around
:全てのアイテムを等間隔に配置。
.flex-container {
justify-content: flex-start;
}
align-items
align-items
プロパティは、クロス軸に沿ってアイテムを配置します。
stretch
:デフォルト。アイテムをコンテナの高さ(または幅)いっぱいに配置。flex-start
:アイテムを先頭にまとめて配置。flex-end
:アイテムを後尾にまとめて配置。center
:アイテムを中央にまとめて配置。baseline
:アイテムをベースラインに沿って配置。
.flex-container {
align-items: stretch;
}
align-content
align-content
プロパティは、複数行のアイテムをクロス軸に沿って配置します。
flex-start
:アイテムを先頭に寄せて配置。flex-end
:アイテムを後尾に寄せて配置。center
:アイテムを中央に配置。space-between
:先頭と後尾は端に、他は等間隔に配置。space-around
:全てのアイテムを等間隔に配置。
.flex-container {
align-content: flex-start;
}
Flexアイテムのプロパティ
order
order
プロパティは、flexアイテムの表示順序を設定します。
.flex-item {
order: 1;
}
flex-grow
flex-grow
プロパティは、flexアイテムの伸長係数を設定します。
.flex-item {
flex-grow: 1;
}
flex-shrink
flex-shrink
プロパティは、flexアイテムの縮小係数を設定します。
.flex-item {
flex-shrink: 1;
}
flex-basis
flex-basis
プロパティは、flexアイテムの初期サイズを設定します。
.flex-item {
flex-basis: auto;
}
flex
flex
プロパティは、flex-grow
、flex-shrink
、flex-basis
をまとめて設定するショートハンドです。
.flex-item {
flex: 1 1 auto;
}
align-self
align-self
プロパティは、個々のflexアイテムの配置方法を設定します。align-items
を上書きします。
.flex-item {
align-self: flex-start;
}
Flexboxレイアウトの具体例
Flexboxを使うと、レスポンシブで柔軟なレイアウトを簡単に実装できます。以下は、Flexboxを使用したレイアウトの一例です。
<div class="flex-container">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
</div>
.flex-container {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
}
.flex-item {
flex: 1;
padding: 10px;
}
この例では、3つのアイテムが水平方向に等間隔で配置され、各アイテムの幅が均等に調整されます。
まとめ
CSS Flexboxは、レイアウトを簡潔にし、少ないコードで柔軟なレイアウトを実現する強力なツールです。各プロパティの理解と適切な活用により、複雑なレイアウトでも効率的に構築できます。CSS Flexboxの詳細なプロパティと使い方を理解し、実際のプロジェクトで効果的に活用しましょう。