Skip to main content Skip to docs navigation

フレックス

Flex

レスポンシブなフレックスユーティリティを使って、グリッドカラム、ナビゲーション、コンポーネントなどをレイアウト、整列、サイズ調整をすばやく設定できます。より複雑な実装の場合は、カスタムCSSが必要になる場合があります。

フレックスの有効化

displayクラスを適用してフレックスコンテナを作成し、直下の子要素をフレックスアイテムに変換します。フレックスコンテナとアイテムは、フレックスプロパティを追加することでさらに変更することができます。

I'm a flexbox container!
html
<div class="d-flex p-2">I'm a flexbox container!</div>
I'm an inline flexbox container!
html
<div class="d-inline-flex p-2">I'm an inline flexbox container!</div>

また、.d-flex.d-inline-flexにはレスポンシブバリエーションが存在します。

  • .d-flex

  • .d-inline-flex

  • .d-sm-flex

  • .d-sm-inline-flex

  • .d-md-flex

  • .d-md-inline-flex

  • .d-lg-flex

  • .d-lg-inline-flex

  • .d-xl-flex

  • .d-xl-inline-flex

  • .d-xxl-flex

  • .d-xxl-inline-flex

方向

方向ユーティリティを使ってフレックスアイテムの向きを設定します。ほとんどのブラウザでデフォルトはrowなので、ここでは水平クラスを省略できます。しかし、この値を明示的に設定する必要があるかもしれません(レスポンシブレイアウトで切り替える場合など)。

水平方向(デフォルト)を設定するには.flex-row、反対側から水平方向を開始するには.flex-row-reverseを使用します。

Flex item 1
Flex item 2
Flex item 3
Flex item 1
Flex item 2
Flex item 3
html
<div class="d-flex flex-row mb-3">
  <div class="p-2">Flex item 1</div>
  <div class="p-2">Flex item 2</div>
  <div class="p-2">Flex item 3</div>
</div>
<div class="d-flex flex-row-reverse">
  <div class="p-2">Flex item 1</div>
  <div class="p-2">Flex item 2</div>
  <div class="p-2">Flex item 3</div>
</div>

垂直方向を設定するには.flex-column、下から開始するには.flex-column-reverseを使用します。

Flex item 1
Flex item 2
Flex item 3
Flex item 1
Flex item 2
Flex item 3
html
<div class="d-flex flex-column mb-3">
  <div class="p-2">Flex item 1</div>
  <div class="p-2">Flex item 2</div>
  <div class="p-2">Flex item 3</div>
</div>
<div class="d-flex flex-column-reverse">
  <div class="p-2">Flex item 1</div>
  <div class="p-2">Flex item 2</div>
  <div class="p-2">Flex item 3</div>
</div>

flex-directionにもレスポンシブユーティリティがあります。

  • .flex-row

  • .flex-row-reverse

  • .flex-column

  • .flex-column-reverse

  • .flex-sm-row

  • .flex-sm-row-reverse

  • .flex-sm-column

  • .flex-sm-column-reverse

  • .flex-md-row

  • .flex-md-row-reverse

  • .flex-md-column

  • .flex-md-column-reverse

  • .flex-lg-row

  • .flex-lg-row-reverse

  • .flex-lg-column

  • .flex-lg-column-reverse

  • .flex-xl-row

  • .flex-xl-row-reverse

  • .flex-xl-column

  • .flex-xl-column-reverse

  • .flex-xxl-row

  • .flex-xxl-row-reverse

  • .flex-xxl-column

  • .flex-xxl-column-reverse

Justify content

justify-contentユーティリティを使用して、フレックスアイテムの主軸(flex-direction: columnの場合はx軸を始点とし、y軸)上の配置を変更します。start(デフォルト)、endcenterbetweenaroundevenlyから選択できます。

Justify
Content
Start
Justify
Content
End
Justify
Content
Center
Justify
Content
Between
Justify
Content
Around
Justify
Content
Evenly
<div class="d-flex justify-content-start">...</div>
<div class="d-flex justify-content-end">...</div>
<div class="d-flex justify-content-center">...</div>
<div class="d-flex justify-content-between">...</div>
<div class="d-flex justify-content-around">...</div>
<div class="d-flex justify-content-evenly">...</div>

justify-contentにもレスポンシブユーティリティがあります。

  • .justify-content-start

  • .justify-content-end

  • .justify-content-center

  • .justify-content-between

  • .justify-content-around

  • .justify-content-evenly

  • .justify-content-sm-start

  • .justify-content-sm-end

  • .justify-content-sm-center

  • .justify-content-sm-between

  • .justify-content-sm-around

  • .justify-content-sm-evenly

  • .justify-content-md-start

  • .justify-content-md-end

  • .justify-content-md-center

  • .justify-content-md-between

  • .justify-content-md-around

  • .justify-content-md-evenly

  • .justify-content-lg-start

  • .justify-content-lg-end

  • .justify-content-lg-center

  • .justify-content-lg-between

  • .justify-content-lg-around

  • .justify-content-lg-evenly

  • .justify-content-xl-start

  • .justify-content-xl-end

  • .justify-content-xl-center

  • .justify-content-xl-between

  • .justify-content-xl-around

  • .justify-content-xl-evenly

  • .justify-content-xxl-start

  • .justify-content-xxl-end

  • .justify-content-xxl-center

  • .justify-content-xxl-between

  • .justify-content-xxl-around

  • .justify-content-xxl-evenly

アイテムの位置調整

align-itemユーティリティを使用して、フレックスアイテムの主軸(flex-direction: columnの場合はx軸を始点とし、y軸)上の配置を変更します。startendcenterbaselinestretch(デフォルト)から選択できます。

Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<div class="d-flex align-items-start">...</div>
<div class="d-flex align-items-end">...</div>
<div class="d-flex align-items-center">...</div>
<div class="d-flex align-items-baseline">...</div>
<div class="d-flex align-items-stretch">...</div>

align-itemsにもレスポンシブユーティリティがあります。

  • .align-items-start

  • .align-items-end

  • .align-items-center

  • .align-items-baseline

  • .align-items-stretch

  • .align-items-sm-start

  • .align-items-sm-end

  • .align-items-sm-center

  • .align-items-sm-baseline

  • .align-items-sm-stretch

  • .align-items-md-start

  • .align-items-md-end

  • .align-items-md-center

  • .align-items-md-baseline

  • .align-items-md-stretch

  • .align-items-lg-start

  • .align-items-lg-end

  • .align-items-lg-center

  • .align-items-lg-baseline

  • .align-items-lg-stretch

  • .align-items-xl-start

  • .align-items-xl-end

  • .align-items-xl-center

  • .align-items-xl-baseline

  • .align-items-xl-stretch

  • .align-items-xxl-start

  • .align-items-xxl-end

  • .align-items-xxl-center

  • .align-items-xxl-baseline

  • .align-items-xxl-stretch

個別のアイテムの位置調整

align-selfユーティリティを使用して、フレックスアイテムの主軸(flex-direction: columnの場合はx軸を始点とし、y軸)上の配置を個別に変更します。startendcenterbaselinestretch(デフォルト)から選択できます。

Flex item
Aligned flex item
Flex item
Flex item
Aligned flex item
Flex item
Flex item
Aligned flex item
Flex item
Flex item
Aligned flex item
Flex item
Flex item
Aligned flex item
Flex item
<div class="align-self-start">Aligned flex item</div>
<div class="align-self-end">Aligned flex item</div>
<div class="align-self-center">Aligned flex item</div>
<div class="align-self-baseline">Aligned flex item</div>
<div class="align-self-stretch">Aligned flex item</div>

align-selfにもレスポンシブユーティリティがあります。

  • .align-self-start

  • .align-self-end

  • .align-self-center

  • .align-self-baseline

  • .align-self-stretch

  • .align-self-sm-start

  • .align-self-sm-end

  • .align-self-sm-center

  • .align-self-sm-baseline

  • .align-self-sm-stretch

  • .align-self-md-start

  • .align-self-md-end

  • .align-self-md-center

  • .align-self-md-baseline

  • .align-self-md-stretch

  • .align-self-lg-start

  • .align-self-lg-end

  • .align-self-lg-center

  • .align-self-lg-baseline

  • .align-self-lg-stretch

  • .align-self-xl-start

  • .align-self-xl-end

  • .align-self-xl-center

  • .align-self-xl-baseline

  • .align-self-xl-stretch

  • .align-self-xxl-start

  • .align-self-xxl-end

  • .align-self-xxl-center

  • .align-self-xxl-baseline

  • .align-self-xxl-stretch

Fill

一連の兄弟要素に.flex-fillクラスを使用すると、利用可能なすべての水平スペースを使用しながら、それらのコンテンツと等しい幅(またはコンテンツがそれらのボーダーボックスを超えていない場合は等しい幅)にそれらを強制します。

Flex item with a lot of content
Flex item
Flex item
html
<div class="d-flex">
  <div class="p-2 flex-fill">Flex item with a lot of content</div>
  <div class="p-2 flex-fill">Flex item</div>
  <div class="p-2 flex-fill">Flex item</div>
</div>

flex-fillにもレスポンシブユーティリティがあります。

  • .flex-fill

  • .flex-sm-fill

  • .flex-md-fill

  • .flex-lg-fill

  • .flex-xl-fill

  • .flex-xxl-fill

拡大と縮小

.flex-grow-*ユーティリティを使うと、フレックスアイテムが利用可能なスペースを埋めるように拡大するかどうかを切り替えることができます。下の例では、.flex-grow-1要素は利用可能なスペースをすべて使い、残りの2つのフレックスアイテムは必要なスペースを確保しています。

Flex item
Flex item
Third flex item
html
<div class="d-flex">
  <div class="p-2 flex-grow-1">Flex item</div>
  <div class="p-2">Flex item</div>
  <div class="p-2">Third flex item</div>
</div>

必要に応じてフレックスアイテムの縮小を切り替えるには.flex-shrink-*ユーティリティを利用します。 下の例では、.flex-shrink-1を指定した2番目のフレックスアイテムは、.w-100を指定した前のフレックスアイテムのためのスペースを確保するために"縮小"して内容を改行するように強制されています。

Flex item
Flex item
html
<div class="d-flex">
  <div class="p-2 w-100">Flex item</div>
  <div class="p-2 flex-shrink-1">Flex item</div>
</div>

flex-growflex-shrinkにもレスポンシブユーティリティがあります。

  • .flex-{grow|shrink}-0

  • .flex-{grow|shrink}-1

  • .flex-sm-{grow|shrink}-0

  • .flex-sm-{grow|shrink}-1

  • .flex-md-{grow|shrink}-0

  • .flex-md-{grow|shrink}-1

  • .flex-lg-{grow|shrink}-0

  • .flex-lg-{grow|shrink}-1

  • .flex-xl-{grow|shrink}-0

  • .flex-xl-{grow|shrink}-1

  • .flex-xxl-{grow|shrink}-0

  • .flex-xxl-{grow|shrink}-1

Auto margins

フレックスボックスは、アイテムの配置とauto marginを組み合わせると非常に便利です。以下に示すのは、auto marginでフレックスアイテムを制御する3つの例です: デフォルト(auto marginなし)、2つのアイテムを右寄せ (.me-auto)、2つのアイテムを左寄せ (.ms-auto)。

Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
html
<div class="d-flex mb-3">
  <div class="p-2">Flex item</div>
  <div class="p-2">Flex item</div>
  <div class="p-2">Flex item</div>
</div>

<div class="d-flex mb-3">
  <div class="me-auto p-2">Flex item</div>
  <div class="p-2">Flex item</div>
  <div class="p-2">Flex item</div>
</div>

<div class="d-flex mb-3">
  <div class="p-2">Flex item</div>
  <div class="p-2">Flex item</div>
  <div class="ms-auto p-2">Flex item</div>
</div>

align-itemsと一緒に使う

align-itemsflex-direction: columnmargin-top: automargin-bottom: autoを組み合わせて、フレックスアイテムをコンテナの上部または下部に垂直に配置できます。

Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
html
<div class="d-flex align-items-start flex-column mb-3" style="height: 200px;">
  <div class="mb-auto p-2">Flex item</div>
  <div class="p-2">Flex item</div>
  <div class="p-2">Flex item</div>
</div>

<div class="d-flex align-items-end flex-column mb-3" style="height: 200px;">
  <div class="p-2">Flex item</div>
  <div class="p-2">Flex item</div>
  <div class="mt-auto p-2">Flex item</div>
</div>

ラップ

フレックスアイテムの折り返しを変更します。デフォルトは.flex-nowrapで全く折り返しなし、.flex-wrapで折り返し、.flex-wrap-reverseで逆方向でかつ折り返しを設定できます。

Flex item
Flex item
Flex item
Flex item
Flex item
<div class="d-flex flex-nowrap">...</div>
Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7
Flex item 8
Flex item 9
Flex item 10
Flex item 11
Flex item 12
Flex item 13
Flex item 14
<div class="d-flex flex-wrap">...</div>
Flex item 1
Flex item 2
Flex item 3
Flex item 4
Flex item 5
Flex item 6
Flex item 7
Flex item 8
Flex item 9
Flex item 10
Flex item 11
Flex item 12
Flex item 13
Flex item 14
<div class="d-flex flex-wrap-reverse">...</div>

flex-warpにもレスポンシブユーティリティがあります。

  • .flex-nowrap

  • .flex-wrap

  • .flex-wrap-reverse

  • .flex-sm-nowrap

  • .flex-sm-wrap

  • .flex-sm-wrap-reverse

  • .flex-md-nowrap

  • .flex-md-wrap

  • .flex-md-wrap-reverse

  • .flex-lg-nowrap

  • .flex-lg-wrap

  • .flex-lg-wrap-reverse

  • .flex-xl-nowrap

  • .flex-xl-wrap

  • .flex-xl-wrap-reverse

  • .flex-xxl-nowrap

  • .flex-xxl-wrap

  • .flex-xxl-wrap-reverse

順序

特定のフレックスアイテムの視覚的な順序を変更するには、いくつかのorderユーティリティを使用します。ここでは、アイテムを最初か最後にするオプションと、DOMの順序を使用するリセットのみを提供します。orderは0から5までの任意の整数値を取るので、必要な追加値についてはカスタムCSSを追加してください。

First flex item
Second flex item
Third flex item
html
<div class="d-flex flex-nowrap">
  <div class="order-3 p-2">First flex item</div>
  <div class="order-2 p-2">Second flex item</div>
  <div class="order-1 p-2">Third flex item</div>
</div>

orderにもレスポンシブユーティリティがあります。

  • .order-0

  • .order-1

  • .order-2

  • .order-3

  • .order-4

  • .order-5

  • .order-sm-0

  • .order-sm-1

  • .order-sm-2

  • .order-sm-3

  • .order-sm-4

  • .order-sm-5

  • .order-md-0

  • .order-md-1

  • .order-md-2

  • .order-md-3

  • .order-md-4

  • .order-md-5

  • .order-lg-0

  • .order-lg-1

  • .order-lg-2

  • .order-lg-3

  • .order-lg-4

  • .order-lg-5

  • .order-xl-0

  • .order-xl-1

  • .order-xl-2

  • .order-xl-3

  • .order-xl-4

  • .order-xl-5

  • .order-xxl-0

  • .order-xxl-1

  • .order-xxl-2

  • .order-xxl-3

  • .order-xxl-4

  • .order-xxl-5

さらに、レスポンシブな.order-first.order-lastクラスもあり、それぞれorder:-1order:6を適用して要素のorderを変更します。

  • .order-first

  • .order-last

  • .order-sm-first

  • .order-sm-last

  • .order-md-first

  • .order-md-last

  • .order-lg-first

  • .order-lg-last

  • .order-xl-first

  • .order-xl-last

  • .order-xxl-first

  • .order-xxl-last

コンテンツの位置調整

フレックスコンテナ上のalign-contentユーティリティを使用して、フレックスアイテムをクロス軸上に全体的に揃えることができます。start(デフォルト)、endcenterbetweenaroundstretchから選択します。 ここでは、デモのためにflex-wrap: wrapを指定しフレックスアイテムの数を増やしています。

注意 このプロパティは、フレックスアイテムの単一行には影響しません。

Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<div class="d-flex align-content-start flex-wrap">...</div>
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<div class="d-flex align-content-end flex-wrap">...</div>
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<div class="d-flex align-content-center flex-wrap">...</div>
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<div class="d-flex align-content-between flex-wrap">...</div>
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<div class="d-flex align-content-around flex-wrap">...</div>
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<div class="d-flex align-content-stretch flex-wrap">...</div>

align-contentにもレスポンシブユーティリティがあります。

  • .align-content-start

  • .align-content-end

  • .align-content-center

  • .align-content-between

  • .align-content-around

  • .align-content-stretch

  • .align-content-sm-start

  • .align-content-sm-end

  • .align-content-sm-center

  • .align-content-sm-between

  • .align-content-sm-around

  • .align-content-sm-stretch

  • .align-content-md-start

  • .align-content-md-end

  • .align-content-md-center

  • .align-content-md-between

  • .align-content-md-around

  • .align-content-md-stretch

  • .align-content-lg-start

  • .align-content-lg-end

  • .align-content-lg-center

  • .align-content-lg-between

  • .align-content-lg-around

  • .align-content-lg-stretch

  • .align-content-xl-start

  • .align-content-xl-end

  • .align-content-xl-center

  • .align-content-xl-between

  • .align-content-xl-around

  • .align-content-xl-stretch

  • .align-content-xxl-start

  • .align-content-xxl-end

  • .align-content-xxl-center

  • .align-content-xxl-between

  • .align-content-xxl-around

  • .align-content-xxl-stretch

Media object

Bootstrap4のmedia object componentの再現が必要な場合は、 以前よりもさらに柔軟性とカスタマイズが可能ないくつかのフレックスユーティリティを使用して再現できます。

PlaceholderImage
This is some content from a media component. You can replace this with any content and adjust it as needed.
html
<div class="d-flex">
  <div class="flex-shrink-0">
    <img src="..." alt="...">
  </div>
  <div class="flex-grow-1 ms-3">
    This is some content from a media component. You can replace this with any content and adjust it as needed.
  </div>
</div>

画像の横にあるコンテンツを垂直方向に中央に配置したい場合:

PlaceholderImage
This is some content from a media component. You can replace this with any content and adjust it as needed.
html
<div class="d-flex align-items-center">
  <div class="flex-shrink-0">
    <img src="..." alt="...">
  </div>
  <div class="flex-grow-1 ms-3">
    This is some content from a media component. You can replace this with any content and adjust it as needed.
  </div>
</div>

CSS

SassユーティリティAPI

フレックスユーティリティは、ユーティリティAPIでscss/_utilities.scssで宣言されています。ユーティリティAPIの使い方はこちら

"flex": (
  responsive: true,
  property: flex,
  values: (fill: 1 1 auto)
),
"flex-direction": (
  responsive: true,
  property: flex-direction,
  class: flex,
  values: row column row-reverse column-reverse
),
"flex-grow": (
  responsive: true,
  property: flex-grow,
  class: flex,
  values: (
    grow-0: 0,
    grow-1: 1,
  )
),
"flex-shrink": (
  responsive: true,
  property: flex-shrink,
  class: flex,
  values: (
    shrink-0: 0,
    shrink-1: 1,
  )
),
"flex-wrap": (
  responsive: true,
  property: flex-wrap,
  class: flex,
  values: wrap nowrap wrap-reverse
),
"justify-content": (
  responsive: true,
  property: justify-content,
  values: (
    start: flex-start,
    end: flex-end,
    center: center,
    between: space-between,
    around: space-around,
    evenly: space-evenly,
  )
),
"align-items": (
  responsive: true,
  property: align-items,
  values: (
    start: flex-start,
    end: flex-end,
    center: center,
    baseline: baseline,
    stretch: stretch,
  )
),
"align-content": (
  responsive: true,
  property: align-content,
  values: (
    start: flex-start,
    end: flex-end,
    center: center,
    between: space-between,
    around: space-around,
    stretch: stretch,
  )
),
"align-self": (
  responsive: true,
  property: align-self,
  values: (
    auto: auto,
    start: flex-start,
    end: flex-end,
    center: center,
    baseline: baseline,
    stretch: stretch,
  )
),
"order": (
  responsive: true,
  property: order,
  values: (
    first: -1,
    0: 0,
    1: 1,
    2: 2,
    3: 3,
    4: 4,
    5: 5,
    last: 6,
  ),
),