CSS
 Computer >> コンピューター >  >> プログラミング >> CSS

CSS3のFlexbox(フレックスボックス)レイアウトを徹底解説

Flexboxとは?

CSS3には「Flexible Box」、通称Flexbox(フレックスボックス)と呼ばれるレイアウトモードが用意されています。Flexboxを活用することで、これまではfloatやpositioningなどのテクニックを駆使しなければ実現できなかった、複雑なWebアプリケーションやWebページのレイアウトを、シンプルな記述で簡単に構築できるようになります。

Flexboxは「フレックスコンテナ」と「フレックスアイテム」という2つの要素で構成されます。display: flex; を指定した要素がコンテナとなり、その直下の子要素が自動的にフレックスアイテムとして扱われます。

コンテナに指定できる主なプロパティ

フレックスコンテナには、以下のプロパティを指定できます。

  • flex-direction … アイテムが並ぶ方向(主軸の向き)を指定します
  • flex-wrap … アイテムがコンテナからあふれた場合の折り返し方法を指定します
  • flex-flow … flex-directionとflex-wrapをまとめて指定できるショートハンドプロパティです
  • justify-content … 主軸方向におけるアイテムの配置・間隔を指定します
  • align-items … 交差軸方向におけるアイテムの配置方法を指定します
  • align-content … 複数行に折り返された場合の行全体の配置方法を指定します

Flexレイアウトのサンプルコード

以下は、CSS3のFlexレイアウトモデルを使った具体的なコード例です。横並び・中央寄せ・縦並びなど、異なる設定を持つ3つのコンテナを比較できます。

<!DOCTYPE html>
<html>
<head>
<style>
body {
    font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.container {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-evenly;
}
.container1 {
    align-self: flex-start;
    display: flex;
    background-color: rgb(71, 30, 255);
    width: 200px;
    margin: 20px;
}
.container1 > div {
    background-color: #f1f1f1;
    margin: 10px;
    padding: 10px;
    font-size: 30px;
}
.container2 {
    display: flex;
    background-color: rgb(14, 126, 79);
    width: 200px;
    justify-content: center;
    align-self: flex-start;
    margin: 20px;
}
.container2 > div {
    background-color: #f1f1f1;
    margin: 10px;
    padding: 10px;
    font-size: 30px;
}
.container3 {
    display: flex;
    flex-direction: column;
    background-color: rgb(168, 60, 10);
    width: 200px;
    align-items: center;
    margin: 20px;
}
.container3 > div {
    background-color: #f1f1f1;
    margin: 10px;
    padding: 10px;
    width: 20px;
    font-size: 30px;
}
</style>
</head>
<body>
<h1>Flex layout example</h1>
<div class="container">
<div class="container1">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
<div class="container2">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
<div class="container3">
<div>1</div>
<div>2</div>
<div>3</div>
</div>
</div>
</body>
</html>

コードのポイント

  • container1 … デフォルトの横並び(row)でアイテムを配置しています
  • container2justify-content: center; により、アイテムを中央に寄せて表示しています
  • container3flex-direction: column; により、アイテムを縦方向に積み重ね、align-items: center; で中央揃えにしています

表示結果

上記のコードをブラウザで開くと、3つの色分けされたコンテナの中に、それぞれ異なる配置方法で数字のブロックが並んでいることが確認できます。このように、Flexboxを使えば数行のCSSだけで柔軟なレイアウトを実現できます。

CSS3のFlexbox(フレックスボックス)レイアウトを徹底解説

  1. 【CSS】Flexboxで作る高度なレイアウト!基本プロパティと実装サンプルを解説

    Flexbox(フレックスボックス)とは? CSS3には「Flexible Box Layout(フレキシブルボックスレイアウト)」と呼ばれるレイアウトモードが用意されており、一般的にはFlexbox(フレックスボックス)として知られています。Flexboxを活用することで、従来のfloatやpositionを使った手法よりもはるかに簡単かつ柔軟に、複雑なWebアプリケーションやWebページのレイアウトを構築できます。 Flexboxは「フレックスコンテナ」(親要素)と「フレックスアイテム」(子要素)という2つの概念で構成されます。親要素にdisplay: flex;を指定するだけで、その直下

  2. CSS3フレキシブルボックスレイアウト(Flexbox)の基本と使い方

    CSS3には「フレキシブルボックス(Flexible Box)」と呼ばれるレイアウトモードが用意されており、一般的にFlexbox(フレックスボックス)として知られています。Flexboxを活用すれば、複雑なWebアプリケーションやWebページのレイアウトも、従来のfloatやpositionを使った手法に比べて、はるかに簡単かつ柔軟に構築できます。Flexboxは「コンテナ(親要素)」と「フレックスアイテム(子要素)」で構成されます。コンテナに指定できる主なプロパティは以下のとおりです。flex-direction:アイテムが並ぶ方向(主軸の向き)を指定しますflex-wrap:アイテムの折