コラム
【CSS】Flexboxを使ったレイアウトのポイント
CSSのFlexboxを使ったレイアウトのポイント
今回は、CSSのFlexbox(フレックスボックス)を使ったレイアウトの作り方と、そのポイントについて解説します。
Flexboxは、Webページを効率的にレイアウトするために便利なツールです。
特に、画面サイズが変わるレスポンシブデザインに役立ちます。
Flexboxとは?
Flexboxは、フレキシブルなレイアウトを簡単に実現できるCSSの機能です。従来のCSSのfloat
やposition
などに比べて、要素を整列させたり、スペースを均等に分配したりするのが非常に簡単です。特に、縦横の整列や、要素間の余白を調整するのに優れています。
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-grow
, flex-shrink
, flex-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を活用してみてください!