HTML/CSS
初心者でもスッキリ分かる!nth-childとnth-of-typeの基本と実践例
2025.12.15
【初心者向け】display: flex の使い方と3つの基本パターンを解説
2025.07.12
Webページのレイアウトを作るとき、多くの人が最初に使うのが、display: block; や inline-block; といった基本的な表示形式です。 たとえば、HTMLでほとんどの場面で使われる div タグは、デフォルトで display: block; として扱われます。そのため、要素が縦にズラッと並ぶのが特徴です。
たとえば、「これを横に並べたい」と思ったとき、どうすればよいのでしょうか。 そこで登場するのが、display: flex; というプロパティです。 このプロパティを使うと、子要素が横に並び、位置や間隔も自由に整列できるようになります。
このように、display: block; が「縦に積む」のに対して、display: flex; は「横に並べる」というレイアウトの仕組みです。 さらに、display: flex; では justify-content というプロパティを使うことで、横に並んだ要素を自由に整列できるという利点があります。 今回は、そんな display: flex; の使い方を、3つのパターンに分けてご紹介します。
display: flex; は、前の項でも述べたように、子要素を横に並べたり整列させたりするのに便利なプロパティです。 親要素にこのプロパティを指定することで、中の子要素の位置を柔軟にコントロールすることができます。 以下に、基本的な書き方の例をご紹介します。
<div class="container_test">
<div class="item_test1">要素1</div>
<div class="item_test2">要素2</div>
<div class="item_test3">要素3</div>
</div>
.container_test {
display: flex;
color: #fff;
}
.item_test1{
background-color: red;
}
.item_test2{
background-color: blue;
}
.item_test3{
background-color: green;
}
このように、CSSで display: flex; を指定するだけで、要素が縦並びから横並びに切り替わるのがポイントです。 特別な設定をしなくても、display : flex;を使うだけで自然と横方向に並べることができるため、レイアウト調整がとても簡単になります。
横並びのレイアウトは、前の章でも紹介したように、親要素に display: flex; を指定するだけで簡単に実現できます。 特別な設定をしなくても、子要素が自動的に横に並ぶようになります。
次によく使われるのが、「要素を左右の端に振り分ける」レイアウトです。 当サイトでも、ヘッダーのメニュー部分にはこのパターンを使用しています。
.container_test {
display: flex;
justify-content: space-between;
}
このように、CSSでは親要素に justify-content プロパティを追加するだけで、要素の配置を変更できます。
justify-content: space-between; を指定すると、最初の要素は左端に、最後の要素は右端にぴったり配置されます。 残ったスペースは、中央の要素の前後に均等に割り振られるのが特徴です。
最後に紹介するのは、子要素を親要素の中央にぴったりと配置するレイアウトです。 ボタンや画像、文字などを中央に表示したいときによく使われます。 今回は追加するプロパティが少し多いため、コメントで補足を入れています。
.container_test {
display: flex;
justify-content: center; /* 横方向の中央揃え */
align-items: center; /* 縦方向の中央揃え */
height: 200px; /* 縦方向に中央揃えするには高さが必要 */
}
justify-content は横方向の揃えに、 align-items は縦方向の揃えに使用します。 この2つを組み合わせることで、要素を縦横どちらも中央に配置することができます。。
justify-content は、display: flex; が指定された親要素の子要素を「横方向にどう並べるか」を決めるためのプロパティです。 前の章で紹介したように、「要素を左寄せ」「中央寄せ」「右寄せ」「均等に並べる」といった並び方を指定できます。 以下に、justify-content の値の種類と、それぞれの表示イメージをまとめた表を掲載します。
| 値 | 説明 | 表示イメージ |
|---|---|---|
| flex-start | 左寄せ(初期値) |
要素1
要素2
要素3 |
| center | 中央揃え |
要素1
要素2
要素3 |
| flex-end | 右寄せ |
要素1
要素2
要素3 |
| space-between | 両端に寄せ、間を均等に空ける |
要素1
要素2
要素3 |
| space-around | 各要素の前後に等しい余白を取る |
要素1
要素2
要素3 |
| space-evenly | すべての間隔が等しくなる |
要素1
要素2
要素3 |
ここでは、display: flex; を使う中で初心者がよくハマるミスと、その解決方法(対策)を紹介します。 「うまく中央に寄らない」「並ばない」「余白がおかしい」など、誰でも一度は経験することばかりです。
ミス1:子要素に justify-content を書いてしまう 対策 justify-content や align-items は親要素に指定するプロパティです。 ブラウザの開発者ツールで親要素と横並びにしたい子要素の関係を確認してみましょう
対策 align-items: center; は、親要素に高さ(height)が指定されていないと効かないことがあります。 親要素の高さが自動(内容に依存)になっているかどうかを確認してみてください。
対策 デフォルトでは、Flexboxの子要素は1行に並ぼうとします。 横幅が足りないと要素がつぶれたり、はみ出したりすることがあります。 そんなときは、親要素に flex-wrap: wrap; を追加して、折り返し可能にしましょう。
対策 margin を使って1つずつ間隔を取ると、左右の余白が不揃いになったり、中央に寄せにくくなったりします。 そこで、Flexbox対応の gap プロパティを使いましょう。 gap は子要素同士の間隔だけを均等に空けるため、とても便利です。
Flexboxは「難しそう」と感じるかもしれませんが、まずは今回紹介した3つの基本パターンだけ覚えるだけでも十分です。 ぜひ、自分のブログや作品づくりの中で試しながら、少しずつ身につけていきましょう!
投稿一覧に戻る