
メディアクエリに続いて、「Flexbox」を学びました。floatに代わる、より柔軟で強力なレイアウト手法です。
Flexboxとは
Flexboxは、モダンなレイアウト方法です。要素を簡単に横並びにしたり、配置を制御したりできます。
floatよりもシンプルで、レスポンシブデザインにも対応しやすいのが特徴です。
display: flex – 基本の指定
display: flex を親要素に指定すると、子要素が横並びになります。
<div class="container">
<div class="box">ボックス1</div>
<div class="box">ボックス2</div>
<div class="box">ボックス3</div>
</div>
.container {
display: flex; /* 親要素に指定 */
}
.box {
width: 200px;
height: 100px;
background-color: #3498db;
margin: 10px;
}
子要素(.box)が自動的に横並びになります。
親要素に合わせて伸縮
Flexboxは、親要素に合わせて子要素が伸縮します。
.container {
display: flex;
width: 100%;
}
.box {
flex: 1; /* 均等に伸縮 */
}
3つのボックスがあれば、それぞれが親要素の1/3の幅になります。
flex-wrap: wrap – 折り返し
flex-wrap: wrap は、子要素のサイズに応じて折り返すプロパティです。
.container {
display: flex;
flex-wrap: wrap; /* 親要素に指定 */
}
.box {
width: 300px;
}
重要: flex-wrap は親要素に指定します。
flex-wrapの違い
/* デフォルト(折り返しなし) */
.container {
display: flex;
}
/* 子要素が縮小されて1行に収まる */
/* 折り返しあり */
.container {
display: flex;
flex-wrap: wrap;
}
/* 子要素のサイズを保ったまま、次の行に折り返す */
flex-direction: column – 縦並び
flex-direction: column は、子要素を上から下に並べるプロパティです。
.container {
display: flex;
flex-direction: column; /* 親要素に指定 */
}
flex-directionの値
| 値 | 方向 |
|---|---|
row | 横並び(デフォルト) |
column | 縦並び |
row-reverse | 横並び(右から左) |
column-reverse | 縦並び(下から上) |
実用例:レスポンシブなカードレイアウト
<div class="card-container">
<div class="card">カード1</div>
<div class="card">カード2</div>
<div class="card">カード3</div>
<div class="card">カード4</div>
</div>
.card-container {
display: flex;
flex-wrap: wrap;
gap: 20px; /* カード間の余白 */
}
.card {
width: 300px;
padding: 20px;
background-color: #f9f9f9;
border: 1px solid #ddd;
}
/* スマホ対応 */
@media (max-width: 768px) {
.card {
width: 100%; /* 1列表示 */
}
}
Flexboxとfloatの比較
| 項目 | float | Flexbox |
|---|---|---|
| 横並び | float: left | display: flex |
| 折り返し | 自動 | flex-wrap: wrap |
| クリア | clear が必要 | 不要 |
| 縦並び | できない | flex-direction: column |
| 中央揃え | 複雑 | 簡単 |
Flexboxの方が柔軟で、コードもシンプルです。
Flexboxのその他の便利なプロパティ
justify-content:横方向の配置
.container {
display: flex;
justify-content: center; /* 中央揃え */
}
flex-start: 左揃え(デフォルト)center: 中央揃えflex-end: 右揃えspace-between: 両端揃えspace-around: 均等配置
align-items:縦方向の配置
.container {
display: flex;
align-items: center; /* 縦方向の中央揃え */
height: 200px;
}
flex-start: 上揃えcenter: 中央揃えflex-end: 下揃えstretch: 伸ばす(デフォルト)
実用例:ナビゲーションバー
<nav class="navbar">
<div class="logo">My Site</div>
<div class="nav-links">
<a href="#">Home</a>
<a href="#">About</a>
<a href="#">Contact</a>
</div>
</nav>
.navbar {
display: flex;
justify-content: space-between; /* 両端に配置 */
align-items: center; /* 縦方向の中央揃え */
padding: 20px;
background-color: #333;
color: white;
}
.nav-links a {
margin-left: 20px;
color: white;
text-decoration: none;
}
今日の学びのポイント
- Flexbox: モダンなレイアウト方法
display: flex: 親要素に合わせて子要素を伸縮・横並びflex-wrap: wrap: 子要素のサイズに応じて折り返す(親要素に指定)flex-direction: column: 子要素を上から下に並べる(親要素に指定)- Flexboxは親要素に指定する
- floatより柔軟で、レスポンシブデザインに最適
Flexboxは、現代のWeb開発で最も重要なレイアウト手法の1つです。floatに代わる標準的な方法として、ぜひマスターしましょう。

-1-120x68.png)
コメント