問題
justify-content: center
を指定しているのに、要素が横幅いっぱいに広がってしまい、中央寄せされません。何が問題でしょうか?
HTML
<div class="container">
<div class="box">ボックス</div>
</div>
CSS
.container {
display: flex;
justify-content: center;
background-color: #e0e0e0;
padding: 20px;
}
.box {
background-color: #2196F3;
color: white;
padding: 20px;
width: 100%; /* 幅100% */
}
実行結果
ボックス
※ ボックスが横幅いっぱいに広がってしまっています
🔧 実際に試してみよう(リアルタイム更新)
上部でHTMLまたはCSSタブを選択して編集すると、下部の結果エリアがリアルタイムで更新されます。
CSSの width: 100%;
を削除して、違いを確認してみましょう。
📺 ライブプレビュー
更新中
ヒント
クリックしてヒントを表示
justify-content
は、フレックスアイテムを主軸に沿って配置しますが、アイテム自体のサイズには影響しません。
問題のコードをよく見ると、.box
に特定の幅が指定されています。
フレックスアイテムの幅が親要素の幅と同じ場合、中央寄せの余白がなくなります。
解答
クリックして解答を表示
問題の原因
.box
にwidth: 100%
が指定されているため、フレックスアイテムがコンテナの幅いっぱいに広がっています。
技術的な説明
- justify-content:フレックスアイテムを主軸に沿って配置する
- width: 100%:利用可能な幅の100%を占有
- フレックスアイテムがコンテナ幅の100%の場合、配置のための余白がない
- 結果として、
justify-content
の効果が視認できない
修正方法
方法1: width指定を削除または変更
.container {
display: flex;
justify-content: center;
background-color: #e0e0e0;
padding: 20px;
}
.box {
background-color: #2196F3;
color: white;
padding: 20px;
/* width: 100%; を削除 */
}
修正後の結果
ボックス
方法2: 固定幅を指定
.box {
background-color: #2196F3;
color: white;
padding: 20px;
width: 200px; /* 固定幅を指定 */
}
固定幅での結果
ボックス
方法3: max-widthを使用
.box {
background-color: #2196F3;
color: white;
padding: 20px;
max-width: 300px; /* 最大幅を制限 */
width: 100%; /* レスポンシブ対応 */
}
max-widthでの結果
ボックス
justify-contentの各値の動作
/* 左寄せ */
justify-content: flex-start;
/* 中央寄せ */
justify-content: center;
/* 右寄せ */
justify-content: flex-end;
/* 均等配置(両端寄せ) */
justify-content: space-between;
/* 均等配置(両端に半分の間隔) */
justify-content: space-around;
/* 均等配置(等間隔) */
justify-content: space-evenly;
覚えておくポイント
justify-content
は要素の配置を制御するが、要素のサイズは変更しない- フレックスアイテムの幅が重要:幅が100%だと配置効果が見えない
- レスポンシブデザインでは
max-width
と組み合わせると効果的