株式会社プランニングA

コラム

column
2024.09.30

【CSS】Flexboxを使ったレイアウトのポイント

CSSのFlexboxを使ったレイアウトのポイント

今回は、CSSのFlexbox(フレックスボックス)を使ったレイアウトの作り方と、そのポイントについて解説します。

Flexboxは、Webページを効率的にレイアウトするために便利なツールです。

特に、画面サイズが変わるレスポンシブデザインに役立ちます。

Flexboxとは?

Flexboxは、フレキシブルなレイアウトを簡単に実現できるCSSの機能です。従来のCSSのfloatpositionなどに比べて、要素を整列させたり、スペースを均等に分配したりするのが非常に簡単です。特に、縦横の整列や、要素間の余白を調整するのに優れています。

Flexboxは以下のようなレイアウトに向いています。

 ●アイテムを縦横に並べたいとき

 ●コンテナ内でアイテムを中央揃えにしたいとき

 ●レスポンシブなグリッドやメニューを作りたいとき

では、基本的な使い方とポイントを見ていきましょう。

基本的な使い方

Flexboxを使うには、親要素(コンテナ)に対してdisplay: flex;を設定します。その後、子要素(フレックスアイテム)のレイアウトを調整します。

【HTML】
<div class="container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
</div>

【CSS】
.container {
display: flex;
justify-content: space-between;
}
.item {
width: 100px;
height: 100px;
background-color: lightblue;
text-align: center;
line-height: 100px;
}

ここでは、親要素にdisplay: flex;を設定し、子要素が横に並ぶようにしています。

Flexboxのポイント

1. 方向を指定する – flex-direction

flex-directionプロパティを使うと、アイテムを横並びにするか、縦並びにするかを指定できます。

 ●row: 横方向に並べる(デフォルト)。

 ●column: 縦方向に並べる。

【CSS】
.container {
display: flex;
flex-direction: column;
}

この設定により、アイテムが縦に並ぶようになります。

2. アイテムの間隔を調整する – justify-content

justify-contentプロパティを使うと、フレックスアイテムの横方向の整列を決めることができます。

主に、アイテム間のスペースを調整する際に役立ちます。

 ●flex-start: 左揃え(デフォルト)。

 ●flex-end: 右揃え。

 ●center: 中央揃え。

 ●space-between: アイテム間に均等なスペースを配置し、端には余白を作らない。

 ●space-around: アイテム間に均等なスペースを配置し、アイテムの外側にも同じスペースを作る。

【CSS】
.container {
display: flex;
justify-content: space-between;
}

space-betweenを使うと、アイテムが均等に配置され、端のスペースがゼロになります。

3. 垂直方向の揃え方 – align-items

align-itemsプロパティは、垂直方向の整列を調整します。親要素の高さが異なる場合や、アイテムのサイズがバラバラなときに役立ちます。

 ●flex-start: 上揃え。

 ●flex-end: 下揃え。

 ●center: 中央揃え。

 ●stretch: アイテムを親要素の高さに合わせて伸ばす(デフォルト)。

 ●baseline: テキストのベースラインに合わせて整列。

【CSS】
.container {
display: flex;
align-items: center;
height: 300px;
}

この設定では、親要素の高さが300pxあり、子要素が垂直方向に中央揃えされます。

4. 複数行対応 – flex-wrap

Flexboxはデフォルトで、1行にすべてのアイテムを詰め込もうとしますが、flex-wrapプロパティを使うと、アイテムを複数行に分けることができます。

 ●nowrap: すべてのアイテムを1行に詰める(デフォルト)。

 ●wrap: アイテムが溢れた場合に次の行に折り返す。

【CSS】
.container {
display: flex;
flex-wrap: wrap;
}

この設定により、アイテムが幅に収まらない場合は次の行に移動します。

5. アイテムごとのサイズを調整する – flex-growflex-shrinkflex-basis

 ●flex-grow: アイテムがどれだけ余分なスペースを取るかを決めます。flex-grow: 1に設定すると、アイテムは可能な限り伸びます。

【CSS】
.item {
flex-grow: 1;
}

 ●flex-shrink: 画面が狭くなったときにアイテムがどれだけ縮むかを設定します。flex-shrink: 0にすると、アイテムは縮まなくなります。
 ●flex-basis: アイテムの初期サイズを指定します。widthのように使えますが、フレックスコンテナ内での初期幅を指定するためのものです。
【CSS】
.item {
flex-basis: 200px;
}

このプロパティを使いこなすと、フレキシブルでレスポンシブなレイアウトが可能になります。

Flexboxで実現できるレイアウト例

1. ナビゲーションバー

Flexboxは、メニューのようなアイテムが並ぶレイアウトにぴったりです。

【HTML】
<nav class="navbar">
<a href="#">Home</a>
<a href="#">About</a>
<a href="#">Services</a>
<a href="#">Contact</a>
</nav>
【CSS】
.navbar {
display: flex;
justify-content: space-around;
background-color: #333;
padding: 10px;
}
.navbar a {
color: white;
text-decoration: none;
}

2. レスポンシブグリッド

複数列のグリッドレイアウトも、flex-wrapを使えば簡単に作れます。

【HTML】
<div class="grid-container">
<div class="item">1</div>
<div class="item">2</div>
<div class="item">3</div>
<div class="item">4</div>
</div>
【CSS】
.grid-container {
display: flex;
flex-wrap: wrap;
}
.item {
flex-basis: 200px;
margin: 10px;
background-color: lightcoral;
text-align: center;
padding: 20px;
}

まとめ

CSSのFlexboxを使うと、複雑なレイアウトも簡単に実現できます。アイテムの配置やサイズ調整、レスポンシブ対応など、多くのレイアウト問題を解決できるのが特徴です。

今回紹介した基本プロパティを理解し、実際にコードを書いてみることで、さまざまなレイアウトに応用できるようになります。

今後のWebデザインにぜひFlexboxを活用してみてください!

お困りのことがございましたら
お気軽にご相談ください

結果につながる広告制作は
プランニングAへおまかせください。

contact