CSS - Flexbox: 初心者向けの柔軟ボックスレイアウトガイド

こんにちは、未来のCSSマスターさんたち!私は、この素晴らしいCSS Flexboxの旅にお伴いするガイドとして、とても嬉しいです。コンピュータサイエンスを教えてきた年数を考えれば、Flexboxはあなたのウェブデザインの生活を大大に簡単にするゲームチェンジツールの一つです。では、さっそく始めましょう!

CSS - Flexbox

CSS Flexboxとは?

部屋に家具を並べるときを想像してみてください。すべてが完璧に収まるようにしたい一方で、簡単に動かせる柔軟性も欲しいですよね。これがCSS Flexboxがウェブレイアウトに対して行うことです!それは、フロートやポジショニングを使わずに柔軟なレスポンシブレイアウトを設計できるレイアウトモデルです。

Flexboxを使うことで簡単にできます:

  • 垂直および水平方向にアイテムを整列
  • HTMLを変更することなくアイテムを並び替え
  • 柔軟なコンテナ要素を作成

Flexboxの要素

コードを始める前に、Flexboxの主要な2つのコンポーネントを理解しましょう:

  1. Flex Container: すべてのflexアイテムを保持する親要素。
  2. Flex Items: Flexコンテナ内の子要素。

箱(コンテナ)の中に玩具(アイテム)があると考えてください。これらの玩具をどのように並べるかは、Flexboxのプロパティーの設定方法に依存します。

基本的なFlexboxレイアウト

簡単な例から始めましょう:

<div class="flex-container">
<div class="flex-item">1</div>
<div class="flex-item">2</div>
<div class="flex-item">3</div>
</div>
.flex-container {
display: flex;
}

.flex-item {
padding: 20px;
background-color: #f1f1f1;
margin: 10px;
}

この例では、flexコンテナに3つのflexアイテムを含めています。コンテナのdisplay: flex;プロパティーがFlexboxを有効にします。

垂直Flexboxレイアウト

アイテムを垂直に積み重ねたいときは、簡単です!

.flex-container {
display: flex;
flex-direction: column;
}

このflex-direction: column;プロパティーは、メイン軸を垂直に変更し、アイテムを上から下に積み重ねます。

Flexbox Justify Contentプロパティー

さて、位置づけについて話しましょう。justify-contentプロパティーはアイテムを水平方向に整列させ、以下の値を受け入れます:

説明
flex-start アイテムはflex-directionの始め側に寄せられます
flex-end アイテムはflex-directionの終わり側に寄せられます
center アイテムはラインの中央に整列されます
space-between アイテムはラインに均等に分布されます
space-around アイテムは均等に分布し、周囲に等しいスペースがあります
.flex-container {
display: flex;
justify-content: space-between;
}

これにより、アイテムがコンテナに均等に広がります。

Flexbox Align Itemsプロパティー

justify-contentはメイン軸に沿って動作する一方で、align-itemsはクロス軸に沿って動作します。以下の値を受け入れます:

説明
stretch アイテムはコンテナに伸ばされます(デフォルト)
flex-start アイテムはクロス軸の始め側に配置されます
flex-end アイテムはクロス軸の終わり側に配置されます
center アイテムはクロス軸の中央に整列されます
baseline アイテムは基準線が一致するように整列されます
.flex-container {
display: flex;
align-items: center;
}

これにより、すべてのアイテムがコンテナ内で垂直方向に中央に整列します。

DivをFlexboxで中央に配置

以下は、Divを水平方向および垂直方向の両方で中央に配置する簡単なテクニックです!

.flex-container {
display: flex;
justify-content: center;
align-items: center;
height: 300px; /* または任意の高さ */
}

Flexbox Wrapプロパティー

アイテムが収まらない場合に次の行に折り返したいときは、flex-wrapが役立ちます:

.flex-container {
display: flex;
flex-wrap: wrap;
}

これにより、スペースが不足している場合にアイテムが次の行に折り返されます。

Flexbox Align Selfプロパティー

あるアイテムを他と異なるように整列させたいときは、align-selfが助けます!

.flex-item:nth-child(2) {
align-self: flex-end;
}

これは、2番目のアイテムをコンテナの下部に配置し、他のアイテムに関係なく整列させます。

CSS Flexbox Containerプロパティー

以下は、コンテナに適用できるすべてのFlexboxプロパティーの表です:

プロパティ 説明
display Flexコンテナを定義
flex-direction Flexアイテムの方向を定義
flex-wrap Flexアイテムが折り返されるかどうかを指定
flex-flow flex-directionとflex-wrapの省略形
justify-content メイン軸に沿ってFlexアイテムを整列
align-items クロス軸に沿ってFlexアイテムを整列
align-content Flexラインが余分なスペースがある場合に整列

CSS Flexbox Itemsプロパティー

そして、Flexアイテムに適用できるプロパティー:

プロパティ 説明
order Flexアイテムの順序を指定
flex-grow Flexアイテムがどれだけ成長するかを指定
flex-shrink Flexアイテムがどれだけ縮小するかを指定
flex-basis Flexアイテムの初期長を指定
flex flex-grow、flex-shrink、flex-basisの省略形
align-self 特定のFlexアイテムの整列を指定

そして、ここまででCSS Flexboxの初めての大きなステップを踏み出しました。自転車に乗るのと同じで、最初は少し不安定に感じるかもしれませんが、練習を積むことですぐにスムーズに乗れるようになります。

これらのプロパティーを試してみることを恐れずに。実践を通じて学ぶことが最も効果的です。さまざまなレイアウトを作成し、プロパティーを遊びながら、何が起きるかを確認してください。間もなく、美しくて柔軟なレイアウトを簡単に作成できるようになるでしょう!

さあ、未来のCSSマスターさんたち、Flexboxを楽しみましょう!

Credits: Image by storyset