フレックス・ボックス(Flex Box)とは何か
フレックス・ボックスは、CSSで操作可能なレイアウト・モデルの一種です。正確にはフレックス・ボックス・モジュール(Flexible Box Module)と言います。この機能を使用すると、通常のフローでは実現が難しい横並びの配置やレスポンシブデザインの対応が簡単に行えます。
フレックス・ボックスのモデルでは、コンテナとアイテムという二つの関係性を扱います。まずは基本を押さえてから、必要となるプロパティの操作を学んでいきましょう。
以降の内容を読み進める前に、CSSのボックス・モデルについて把握しておくとスムーズに理解できます。ボックス・モデルは、CSSがHTMLの要素をどのように扱うのかを表す基本的な概念です。この仕組みの拡張機能の一種が、フレックス・ボックスなのです。
フレックス・ボックスを開始する
フレックス・ボックスの作成手順は非常に簡単です。フレックス・ボックスのレイアウトを適用したい要素にdisplayプロパティを追加し、その値にflexまたはinline-flexを指定します。
これで下準備が整いました。あとは必要な数だけ子要素を配置し、期待通りのレイアウトに整えていくだけです。フレックス・ボックスの記述内容はそれほど複雑ではありませんが、コンテナやアイテムといった多くの用語が登場するため、言葉の意味を事前に把握しておくことを推奨します。
HTMLとCSSの基本的な構成は以下の通りです。
<div class="container">
<div class="item">Item 1</div>
<div class="item">Item 2</div>
<div class="item">Item 3</div>
<div class="item">Item 4</div>
<div class="item">Item 5</div>
</div>
.container {
display: flex;
/* コンテナに指定するプロパティ */
}
.item {
/* アイテムに指定するプロパティ */
}
コンテナとアイテムについて
フレックス・ボックスでは、コンテナとアイテムという二つの主従関係を扱います。コンテナというのはアイテムを包含する親要素、アイテムはコンテナに含まれる子要素です。
コンテナは、displayプロパティの値にflexまたはinline-flexが指定された要素です。この状態の要素は、コンテンツ・ボックスの内部空間にフレックス・ボックスのレイアウトを適用します。これは通常のフローとは別のルールで子要素が配置されることを意味します。
そしてフレックス・コンテナの直下に配置された子要素は、自動的にフレックス・アイテムとして扱われます。フレックス・アイテムにするために、何か特別なCSSを追記する必要はありません。
以下の例を操作してみましょう。displayプロパティの値がblockの場合、子要素は通常のフローに従って配置されます。その値をflexに変更すると、どのように表示されるでしょうか。
