(Sample)
「写真とテキストを横に並べたいけど、floatはちょっと古いって聞いた…」
そんなあなたにぴったりなのがFlexbox(フレックスボックス)です。
今回は、Flexboxを使って写真と文字を横に並べる方法を、丁寧にかつ実践的に解説します!
Flexboxってなに?
要素の並び方を「柔軟(flexible)」にするためのレイアウト方法
従来のfloat
やinline-block
では難しかった、中央揃えや余白の均等配置が、Flexboxなら簡単にできてしまいます!
たとえるなら、Flexboxは「要素を自由自在に並べられるレゴブロックのような仕組み」です。
今回のコードのポイントはここ!
あなたのHTMLでは、次のようなレイアウトを作っています:
- 画面が広いとき:写真1:テキスト2の比率で横並び
- 画面が狭いとき:縦並びに切り替わるレスポンシブ対応
この構成は、Flexboxのflex-wrap: wrap
とメディアクエリによって実現されています。
コードを分解してやさしく解説
Flexboxの設定部分
.container {
display: flex;
flex-wrap: wrap;
}
display: flex
→ Flexboxレイアウトを有効化flex-wrap: wrap
→ 要素が入りきらないときに自動で折り返す
これにより、スマホなどの狭い画面でも無理やり横並びにせず、縦に整列してくれるようになります。
子要素の幅を調整
.image-column,
.text-column {
flex: 1 1 100%;
}
flex: 1 1 100%
とは、「基本幅100%、必要なら縮んでもよいよ」の意味- スマホなど狭い画面では、写真とテキストが上下に並ぶ
横並びに切り替えるメディアクエリ
@media (min-width: 768px) {
.image-column {
flex: 0 0 33.33%;
}
.text-column {
flex: 0 0 66.67%;
}
}
- 画面幅が768px以上のときに、
- 写真:横幅の33.33%
- テキスト:横幅の66.67%
flex: 0 0 ○%
で幅の固定+伸縮しないという設定になります
float
との違いは何?
比較項目 | float | Flexbox |
---|---|---|
横並びのしやすさ | △ 明示的に幅指定が必要 | ◎ 柔軟に設定できる |
中央揃え | × 難しい | ◎ らくらく |
レスポンシブ対応 | △ 工夫が必要 | ◎ wrap ですぐ対応 |
並び順の変更 | × HTML順に依存 | ◎ CSSだけで変更可能(order ) |
たとえば、スマホではテキストを先に、PCでは写真を先に、などデバイスに応じて順番を変えることもFlexboxなら可能です。
よくある失敗とその対策
よくあるミス | 原因 | 対策 |
---|---|---|
要素がはみ出す | flex の幅指定ミス | flex-wrap: wrap を必ず指定 |
横並びにならない | display: flex を指定してない | 親要素に忘れず指定 |
縦に積まれない | flex の幅が固定 | flex: 1 1 100% などで柔軟に指定 |
図解:画面サイズによる並びの違い
画面が広いとき:
+------------------+----------------------------+
| 写真 | テキスト |
| (33.33%) | (66.67%) |
+------------------+----------------------------+
画面が狭いとき:
+----------------------------------------------+
| 写真 |
+----------------------------------------------+
| テキスト |
+----------------------------------------------+
これは、メディアクエリとFlexboxの連携によって実現できています。
まとめ:Flexboxの使いどころ
Flexboxはこんなときに便利!
- コンテンツを横に綺麗に並べたいとき
- スマホやPCで表示を切り替えたいとき
- 中央揃えや左右均等配置をしたいとき
- 高さを揃えたり、順番を変えたりしたいとき
次のステップは?
Flexboxを理解したら、次は以下にチャレンジしてみましょう:
justify-content
やalign-items
で位置調整order
を使って並び順を変える- ネスト(入れ子)Flexboxで複雑なレイアウトに対応
- Gridレイアウトでさらに自由度の高いデザインに挑戦!
Flexboxは「レイアウト設計の武器」です。マスターすれば、どんなUIも思い通りにデザインできますよ!