1. display: flex
とは?
display: flex
はCSSのプロパティで、要素を柔軟に配置し、レイアウトを簡単に構築できる機能です。Flexbox(フレックスボックス)を使うことで、縦横の要素配置、スペース配分、揃え方を効率的に管理できます。
2. 基本的なプロパティの紹介
Flexboxの主なプロパティは以下の通りです:
コンテナプロパティ(親要素に指定)
display: flex
: Flexboxを有効化。flex-direction
: 子要素の並び方向(横方向row
、縦方向column
など)。justify-content
: 主軸方向(横または縦)の配置方法(中央、隙間均等など)。align-items
: 交差軸方向(縦または横)の揃え方(中央、基準線など)。flex-wrap
: 子要素を折り返すかどうか。
アイテムプロパティ(子要素に指定)
flex
: 子要素の伸縮比率を指定。align-self
: 特定の子要素だけ揃え方を変更。
3. 実用例
3.1 水平中央揃えのレイアウト
子要素を横並びにし、中央に揃える基本的な例。
htmlコードをコピーする<div class="container">
<div class="item">Box 1</div>
<div class="item">Box 2</div>
<div class="item">Box 3</div>
</div>
cssコードをコピーする.container {
display: flex;
justify-content: center; /* 主軸方向で中央揃え */
align-items: center; /* 交差軸方向で中央揃え */
height: 100vh; /* コンテナの高さを画面全体に */
}
.item {
width: 100px;
height: 100px;
background-color: lightblue;
margin: 10px;
display: flex;
justify-content: center;
align-items: center;
font-size: 1.2rem;
}
3.2 レスポンシブな2カラムレイアウト
Flexboxを使って、画面サイズに応じてカラムの数を切り替える例。
htmlコードをコピーする<div class="container">
<div class="item">Column 1</div>
<div class="item">Column 2</div>
<div class="item">Column 3</div>
<div class="item">Column 4</div>
</div>
cssコードをコピーする.container {
display: flex;
flex-wrap: wrap; /* 子要素を折り返し可能に */
gap: 10px; /* 子要素間のスペースを追加 */
}
.item {
flex: 1 1 calc(50% - 10px); /* 子要素を50%の幅で配置 */
background-color: lightcoral;
padding: 20px;
text-align: center;
box-sizing: border-box;
}
@media (max-width: 600px) {
.item {
flex: 1 1 100%; /* モバイルでは1列に */
}
}
3.3 ナビゲーションバーの作成
Flexboxを使って、左右に分かれたナビゲーションバーを作成。
htmlコードをコピーする<nav class="navbar">
<div class="logo">LOGO</div>
<ul class="menu">
<li>Home</li>
<li>About</li>
<li>Contact</li>
</ul>
</nav>
cssコードをコピーする.navbar {
display: flex;
justify-content: space-between; /* 両端に要素を配置 */
align-items: center; /* 縦方向で中央揃え */
padding: 10px 20px;
background-color: #333;
color: white;
}
.menu {
display: flex;
gap: 15px; /* メニュー間のスペースを確保 */
list-style: none;
}
.menu li {
cursor: pointer;
}
4. 実践的なTips
4.1 子要素の比率を柔軟に調整
flex
プロパティを使うと、子要素ごとに異なる幅を簡単に指定できます。
cssコードをコピーする.item {
flex: 2; /* 他のアイテムより2倍の幅を持つ */
}
4.2 縦方向の中央揃えも簡単
従来のposition
やmargin
を使わずに縦中央揃えが可能です:
cssコードをコピーする.container {
display: flex;
align-items: center; /* 交差軸方向で中央揃え */
}
4.3 コンテナをスクロール可能にする
Flexboxはスクロールの実装も簡単です:
cssコードをコピーする.container {
display: flex;
flex-wrap: nowrap; /* 子要素を1行で配置 */
overflow-x: auto; /* 横スクロールを有効化 */
}
5. Flexboxの限界と注意点
- 複雑なグリッドレイアウトには、
grid
の方が適している場合があります。 - IEなど古いブラウザでは一部機能がサポートされていない可能性があります(特に
gap
プロパティ)。
まとめ
Flexboxは、直感的に要素を整列させる強力なツールです。横並びや縦揃え、スペースの均等配置など、レイアウト作成に必要なほぼすべての操作を簡潔に実現できます。これらの具体例を参考に、Flexboxを活用して洗練されたレイアウトを構築してみてください!