Flexbox layout
従来の float や inline-block によるレイアウトでは、垂直方向の中央揃えや等分配置が困難だった。Flexbox は親要素に display: flex を指定するだけで、子要素の配置・整列・伸縮を宣言的に制御できる。レスポンシブデザインにおけるナビゲーションやカードの横並びなど、一次元レイアウトの標準手法となっている。
概要
従来の float や inline-block によるレイアウトでは、垂直方向の中央揃えや等分配置が困難だった。Flexbox は親要素に display: flex を指定するだけで、子要素の配置・整列・伸縮を宣言的に制御できる。レスポンシブデザインにおけるナビゲーションやカードの横並びなど、一次元レイアウトの標準手法となっている。
対応ブラウザ
デスクトップ
Chrome 29+
Edge 12+
Safari 9+
Firefox 20+
モバイル
Chrome Android 29+
Safari iOS 9+
Firefox Android 20+
基本構文
CSS
.container {
display: flex;
justify-content: center;
align-items: center;
gap: 1rem;
}
.item {
flex: 1 1 auto;
} 実務での使いどころ
-
ナビゲーションバー
ロゴ・メニュー項目・アクションボタンを水平に配置し、余白を自動的に調整するレスポンシブなナビゲーション。
-
カードの横並びレイアウト
複数のカードを横並びにし、高さを揃えつつ余剰スペースを均等に分配する。
注意点
- flex-wrap を指定しないとアイテムが一行に押し込まれ、はみ出す場合がある。
- order プロパティで視覚的な順序を変えると、キーボード操作やスクリーンリーダーの読み上げ順との乖離が生じる。
アクセシビリティ
- order プロパティによる並び替えは視覚のみに影響し、DOM 順序(読み上げ順・タブ順)は変わらない。視覚と論理順序を一致させるよう注意する。