CSS ・ Flexbox・Grid

Flexbox

親(コンテナ)と子(アイテム)で横に並べる

Flexbox は、要素を横並び(または縦並び)に配置するためのしくみです。親要素に display: flex を書き、並べ方は親と子それぞれのプロパティで調整します。

始め方
親要素に display: flex
構成
コンテナ(親)とアイテム(子)
使う場面
横並び・中央寄せ・均等配置
01

サンプルコード

HTML
1<div class="flex">
2 <div class="flex__item">1</div>
3 <div class="flex__item">2</div>
4 <div class="flex__item">3</div>
5</div>
CSS
1.flex {
2 display: flex;
3 gap: 8px;
4}
5.flex__item {
6 padding: 12px 20px;
7 background: #b68235;
8 color: #fff;
9}
02

実行結果

ブラウザでの表示親の .flex に display: flex を書くだけで、子の .flex__item が横に並びます
03

解説

Flexbox は、コンテナ(親要素) と アイテム(子要素) の2つで構成されます。要素を横並びで配置したいときに使い、実際の案件でも見かけないことはまずないほどよく使われます。

使い方は、並べたい要素を囲む親要素に display: flex を指定するだけです。すると直下の子要素が横一列に並びます。

Flexbox のプロパティには、親要素に書くもの と 子要素に書くもの があります。書く場所を間違えると効かないので、下の一覧で確認しながら使います。

04

応用例・注意点

Flexbox の用語

用語説明
フレックスコンテナdisplay: flex を指定した親要素
フレックスアイテムコンテナの直下にある子要素(孫要素は含まない)
主軸アイテムが並ぶ方向。初期値は横(左から右)
交差軸主軸と直角の方向。横並びのときは縦

ロゴとメニューを左右に分けて並べる

親に display: flex と justify-content: space-between を書くと、ヘッダーの定番レイアウトになります。

HTML
1<header class="header">
2 <p class="logo">ACT HOUSE</p>
3 <nav>メニュー</nav>
4</header>
CSS
1.header {
2 display: flex;
3 justify-content: space-between;
4 align-items: center;
5}

注意点

  1. 01display: flex は並べたい要素そのものではなく、それを囲む親要素に書きます。
  2. 02効くのは直下の子要素だけです。孫要素も並べたいときは、子要素にも display: flex を指定します。
05

親と子に書くプロパティ一覧

Flexbox のプロパティを、書く場所ごとにまとめました。まずは flex-direction・flex-wrap・justify-content・align-items・gap(親) と order・flex(子) を覚えれば、ほとんどのレイアウトが作れます。

親要素(コンテナ)に書くプロパティ

プロパティ役割
flex-direction子要素を並べる向き(横・縦・逆順)
flex-wrap子要素を折り返すかどうか
flex-flowflex-direction と flex-wrap をまとめて指定(例:flex-flow: row wrap;)
justify-content子要素の水平方向(主軸方向)の位置
align-items子要素の垂直方向(交差軸方向)の位置
align-content折り返して複数行になったときの、行全体の垂直方向の位置
gap(column-gap・row-gap)子要素同士の間隔

子要素(アイテム)に書くプロパティ

プロパティ役割
order並び順
flex-grow伸び率(余った幅をどの割合でもらうか)
flex-shrink縮み率(幅が足りないときにどの割合で縮むか)
flex-basisベースの幅(伸び縮みする前の基本の大きさ)
flexflex-grow・flex-shrink・flex-basis をまとめて指定
align-selfその子要素だけの垂直方向の位置(align-items を個別に上書き)

「水平・垂直」と「主軸・交差軸」

  • justify-content は水平方向、align-items は垂直方向と覚えておけば、横並びのときは十分です。
  • 正確には「主軸」「交差軸」の向きです。flex-direction: column で縦並びにすると、2つの向きが入れ替わります。
↑↓ 選択Enter 移動Esc 閉じるCtrl K⌘K で開閉