今回やること
Flexboxは、要素を横並びや縦並びで整えるためのCSSです。
横並びにしたい要素そのものではなく、その親要素に display: flex を指定します。
今回はナビゲーションとカード一覧を作ります。
ナビゲーションを横並びにする
HTMLを用意します。
<nav class="nav">
<a href="#profile">プロフィール</a>
<a href="#learning">学習中</a>
<a href="#contact">連絡先</a>
</nav>
CSSで親要素に display: flex を指定します。
.nav {
display: flex;
gap: 16px;
}
gap は要素同士の間隔です。
左右に分ける
サイト名とメニューを左右に分ける例です。
<header class="site-header">
<p class="logo">My Portfolio</p>
<nav class="nav">
<a href="#profile">プロフィール</a>
<a href="#learning">学習中</a>
</nav>
</header>
.site-header {
display: flex;
justify-content: space-between;
align-items: center;
gap: 24px;
}
| プロパティ | 役割 |
|---|---|
justify-content | 主軸方向の配置 |
align-items | 交差軸方向の配置 |
gap | 要素間の余白 |
カード一覧を作る
カードを3つ並べます。
<div class="card-list">
<article class="card">
<h2>HTML</h2>
<p>ページの構造を作る。</p>
</article>
<article class="card">
<h2>CSS</h2>
<p>見た目を整える。</p>
</article>
<article class="card">
<h2>JavaScript</h2>
<p>動きを付ける。</p>
</article>
</div>
.card-list {
display: flex;
gap: 16px;
}
.card {
flex: 1;
padding: 24px;
border: 1px solid #e5e7eb;
border-radius: 12px;
background-color: #ffffff;
}
flex: 1 を指定すると、カードが同じ幅で広がります。
折り返しを許可する
画面が狭い時に折り返したい場合は flex-wrap を使います。
.card-list {
display: flex;
flex-wrap: wrap;
gap: 16px;
}
.card {
flex: 1 1 240px;
}
240px より狭くなりそうな時に、次の行へ回りやすくなります。
よくあるミス
| ミス | 問題 | 修正 |
|---|---|---|
子要素に display: flex を書く | 横並びにならない | 親要素に指定 |
gap ではなく全部に margin | 余白管理が複雑になる | Flexboxでは gap を優先 |
| 狭い画面でも横並び固定 | はみ出す | flex-wrap を使う |
align-items と justify-content を混同 | 配置が想定と違う | 主軸と交差軸を確認 |
練習
次を作ってください。
- ヘッダー内でロゴとナビを左右配置する
- 3つの学習カードを横並びにする
- カード間に
gapを入れる - 画面が狭い時に折り返すようにする
次のステップ
CSS入門 #4 - Gridでカード一覧を作る で、より一覧向きのレイアウトを作ります。