「floatはもう古い?」「左右に要素を並べたいけど、うまくいかない…」 そんな方のために、CSSレイアウトの中核となる flex
と grid
の使い方を、Web制作現場でよく使うパターンを交えて解説します。
目次
floatはもう古い?でも完全になくなったわけじゃない
CSSレイアウトの主流は flex
や grid
に移りましたが、float
にもまだ使い道があります。
floatを使うケース
- 画像の回り込み(テキストの横に画像を配置)
<img src="sample.jpg" alt="説明文" style="float: left; margin-right: 1em;"> <p>画像の右側にテキストが回り込みます。ここはflexやgridでは自然な回り込みが難しく、floatの出番です。</p>
floatの注意点
- 回り込ませた後に
clear: both;
を指定して回り込みを解除する必要あり - レイアウト全体に使うのは非推奨(flex/gridを使うべき)
flexとgridの違いをざっくり解説
特徴 | flex | grid |
---|---|---|
軸 | 1軸(横 or 縦) | 2軸(縦 + 横) |
並べ方 | コンテンツに応じて並ぶ | エリアを指定して配置 |
適しているケース | 横並び、縦積み、ボックスの整列 | 複雑なレイアウト、マガジン風配置 |
flexの基本構文と使い方
.parent {
display: flex;
justify-content: space-between;
align-items: center;
}
よく使うプロパティ
justify-content
: 主軸方向(横なら横)にどう配置するかalign-items
: 交差軸(縦)方向にどう揃えるか
よくあるパターン
横並びにして中央寄せ
.flex-center {
display: flex;
justify-content: center;
align-items: center;
}
左右に要素を配置したいとき
.flex-between {
display: flex;
justify-content: space-between;
}
カラム落ちを防ぎたいとき(折り返し)
.flex-wrap {
display: flex;
flex-wrap: wrap;
}
gridの基本構文と使い方
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 20px;
}
よく使うプロパティ
grid-template-columns
: カラム数と幅を設定gap
: 要素間の余白grid-template-areas
: 名前をつけてレイアウト制御も可能
2カラムレイアウトの例
.grid-2col {
display: grid;
grid-template-columns: 1fr 2fr;
gap: 30px;
}
上下左右にマス目を分ける例
.grid-area {
display: grid;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
grid-template-columns: 200px 1fr;
}
どちらを使うべき?迷ったらこの基準で!
ケース | おすすめ |
横に要素を並べたいだけ | flex |
横 + 縦に複雑に並べたい | grid |
レスポンシブ対応を自動で調整したい | grid(auto-fit or auto-fill ) |
ナビゲーションやボタン配置 | flex |
まとめ:flexとgridはCSSレイアウトの両輪!
flex
: 横並び、中央寄せ、ナビやリスト配置に◎grid
: 規則的な配置、LPのコンテンツ一覧、複雑なレイアウトに◎float
も画像の回り込みなど一部で現役
まずは実務でよく使うパターンから覚えて、応用できる幅を増やしていきましょう!
コメント