利用一整套响应式 flexbox 实用程序,快速管理网格列、导航、组件等的布局、对齐和尺寸。对于更复杂的实现,可能需要自定义 CSS。

启用 flex 行为

应用 display 实用程序以创建 flexbox 容器,并将直接子元素转换为 flex 项目。flex 容器和项目可以通过其他 flex 属性进行进一步修改。

我是一个 flexbox 容器!
<div class="d-flex p-2 bd-highlight">I'm a flexbox container!</div>
我是一个内联 flexbox 容器!
<div class="d-inline-flex p-2 bd-highlight">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

方向

使用方向实用程序在 flex 容器中设置 flex 项目的方向。在大多数情况下,你可以省略此处的水平类,因为浏览器的默认值为 row。但是,你可能会遇到需要显式设置此值的情况(例如响应式布局)。

使用 .flex-row 设置水平方向(浏览器的默认值),或使用 .flex-row-reverse 从另一侧开始水平方向。

Flex 项目 1
Flex 项目 2
Flex 项目 3
Flex 项目 1
Flex 项目 2
Flex 项目 3
<div class="d-flex flex-row bd-highlight mb-3">
  <div class="p-2 bd-highlight">Flex item 1</div>
  <div class="p-2 bd-highlight">Flex item 2</div>
  <div class="p-2 bd-highlight">Flex item 3</div>
</div>
<div class="d-flex flex-row-reverse bd-highlight">
  <div class="p-2 bd-highlight">Flex item 1</div>
  <div class="p-2 bd-highlight">Flex item 2</div>
  <div class="p-2 bd-highlight">Flex item 3</div>
</div>

使用 .flex-column 设置垂直方向,或使用 .flex-column-reverse 从另一侧开始垂直方向。

Flex 项目 1
Flex 项目 2
Flex 项目 3
Flex 项目 1
Flex 项目 2
Flex 项目 3
<div class="d-flex flex-column bd-highlight mb-3">
  <div class="p-2 bd-highlight">Flex item 1</div>
  <div class="p-2 bd-highlight">Flex item 2</div>
  <div class="p-2 bd-highlight">Flex item 3</div>
</div>
<div class="d-flex flex-column-reverse bd-highlight">
  <div class="p-2 bd-highlight">Flex item 1</div>
  <div class="p-2 bd-highlight">Flex item 2</div>
  <div class="p-2 bd-highlight">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

对齐内容

在 flexbox 容器上使用 justify-content 实用程序来更改 flex 项目在主轴(开始时的 x 轴,如果 flex-direction: column 则为 y 轴)上的对齐方式。从 start(浏览器的默认值)、endcenterbetweenaround 中进行选择。

Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<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>

justify-content 也有响应式变体。

  • .justify-content-start
  • .justify-content-end
  • .justify-content-center
  • .justify-content-between
  • .justify-content-around
  • .justify-content-sm-start
  • .justify-content-sm-end
  • .justify-content-sm-center
  • .justify-content-sm-between
  • .justify-content-sm-around
  • .justify-content-md-start
  • .justify-content-md-end
  • .justify-content-md-center
  • .justify-content-md-between
  • .justify-content-md-around
  • .justify-content-lg-start
  • .justify-content-lg-end
  • .justify-content-lg-center
  • .justify-content-lg-between
  • .justify-content-lg-around
  • .justify-content-xl-start
  • .justify-content-xl-end
  • .justify-content-xl-center
  • .justify-content-xl-between
  • .justify-content-xl-around

对齐项目

在 flexbox 容器上使用 align-items 实用程序来更改 flex 项目在交叉轴(开始时的 y 轴,如果 flex-direction: column 则为 x 轴)上的对齐方式。从 startendcenterbaselinestretch(浏览器的默认值)中进行选择。

Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<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-self 实用程序,以分别更改它们在交叉轴(开始时的 y 轴,如果 flex-direction: column,则为 x 轴)上的对齐方式。从与 align-items 相同的选项中进行选择:startendcenterbaselinestretch(浏览器默认值)。

Flex 项目
对齐的弹性项目
Flex 项目
Flex 项目
对齐的弹性项目
Flex 项目
Flex 项目
对齐的弹性项目
Flex 项目
Flex 项目
对齐的弹性项目
Flex 项目
Flex 项目
对齐的弹性项目
Flex 项目
<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

填充

对一系列同级元素使用 .flex-fill 类,以强制它们的宽度等于其内容(或者如果其内容不超过其边框框,则等于宽度),同时占用所有可用的水平空间。

内容很多的弹性项目
Flex 项目
Flex 项目
<div class="d-flex bd-highlight">
  <div class="p-2 flex-fill bd-highlight">Flex item with a lot of content</div>
  <div class="p-2 flex-fill bd-highlight">Flex item</div>
  <div class="p-2 flex-fill bd-highlight">Flex item</div>
</div>

flex-fill 也有响应式变体。

  • .flex-fill
  • .flex-sm-fill
  • .flex-md-fill
  • .flex-lg-fill
  • .flex-xl-fill

增长和收缩

使用 .flex-grow-* 实用程序切换弹性项目填充可用空间的能力。在下面的示例中,.flex-grow-1 元素使用它所能使用的所有可用空间,同时为另外两个弹性项目留出必要的空间。

Flex 项目
Flex 项目
第三个弹性项目
<div class="d-flex bd-highlight">
  <div class="p-2 flex-grow-1 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Third flex item</div>
</div>

使用 .flex-shrink-* 实用程序切换弹性项目在必要时缩小的能力。在下面的示例中,带有 .flex-shrink-1 的第二个弹性项目被迫将其内容换行到新行,从而“缩小”以留出更多空间给带有 .w-100 的前一个弹性项目。

Flex 项目
Flex 项目
<div class="d-flex bd-highlight">
  <div class="p-2 w-100 bd-highlight">Flex item</div>
  <div class="p-2 flex-shrink-1 bd-highlight">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 对齐与自动边距混合使用时,Flexbox 可以做一些非常棒的事情。下面展示了通过自动边距控制 flex 项目的三个示例:默认(无自动边距)、将两个项目推到右侧(.mr-auto)以及将两个项目推到左侧(.ml-auto)。

不幸的是,IE10 和 IE11 无法正确支持父级具有非默认 justify-content 值的 flex 项目上的自动边距。 请参阅此 StackOverflow 答案 了解更多详情。

Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<div class="d-flex bd-highlight mb-3">
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
  <div class="p-2 bd-highlight">Flex item</div>
</div>

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

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

使用 align-items

通过混合使用 align-itemsflex-direction: column 以及 margin-top: automargin-bottom: auto,将一个 flex 项目垂直移动到容器的顶部或底部。

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

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

换行

更改 flex 项目在 flex 容器中换行的方式。使用 .flex-nowrap 选择根本不换行(浏览器默认)、使用 .flex-wrap 换行或使用 .flex-wrap-reverse 反向换行。

Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<div class="d-flex flex-nowrap">
  ...
</div>
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<div class="d-flex flex-wrap">
  ...
</div>
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<div class="d-flex flex-wrap-reverse">
  ...
</div>

flex-wrap 也存在响应式变体。

  • .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

顺序

使用少数 order 实用程序更改特定 flex 项目的视觉顺序。我们仅提供将项目设为第一个或最后一个的选项,以及使用 DOM 顺序的重置。由于 order 接受任何整数值(例如 5),因此请为所需的任何其他值添加自定义 CSS。

第一个 flex 项目
第二个 flex 项目
第三个弹性项目
<div class="d-flex flex-nowrap bd-highlight">
  <div class="order-3 p-2 bd-highlight">First flex item</div>
  <div class="order-2 p-2 bd-highlight">Second flex item</div>
  <div class="order-1 p-2 bd-highlight">Third flex item</div>
</div>

order 也存在响应式变体。

  • .order-0
  • .order-1
  • .order-2
  • .order-3
  • .order-4
  • .order-5
  • .order-6
  • .order-7
  • .order-8
  • .order-9
  • .order-10
  • .order-11
  • .order-12
  • .order-sm-0
  • .order-sm-1
  • .order-sm-2
  • .order-sm-3
  • .order-sm-4
  • .order-sm-5
  • .order-sm-6
  • .order-sm-7
  • .order-sm-8
  • .order-sm-9
  • .order-sm-10
  • .order-sm-11
  • .order-sm-12
  • .order-md-0
  • .order-md-1
  • .order-md-2
  • .order-md-3
  • .order-md-4
  • .order-md-5
  • .order-md-6
  • .order-md-7
  • .order-md-8
  • .order-md-9
  • .order-md-10
  • .order-md-11
  • .order-md-12
  • .order-lg-0
  • .order-lg-1
  • .order-lg-2
  • .order-lg-3
  • .order-lg-4
  • .order-lg-5
  • .order-lg-6
  • .order-lg-7
  • .order-lg-8
  • .order-lg-9
  • .order-lg-10
  • .order-lg-11
  • .order-lg-12
  • .order-xl-0
  • .order-xl-1
  • .order-xl-2
  • .order-xl-3
  • .order-xl-4
  • .order-xl-5
  • .order-xl-6
  • .order-xl-7
  • .order-xl-8
  • .order-xl-9
  • .order-xl-10
  • .order-xl-11
  • .order-xl-12

对齐内容

在 flexbox 容器上使用 align-content 实用程序可在交叉轴上将 flex 项组合在一起对齐。从 start(浏览器默认值)、endcenterbetweenaroundstretch 中进行选择。为了演示这些实用程序,我们强制执行了 flex-wrap: wrap 并增加了 flex 项的数量。

注意!此属性对单行 flex 项没有影响。

Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<div class="d-flex align-content-start flex-wrap">
  ...
</div>
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<div class="d-flex align-content-end flex-wrap">...</div>
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<div class="d-flex align-content-center flex-wrap">...</div>
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<div class="d-flex align-content-between flex-wrap">...</div>
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<div class="d-flex align-content-around flex-wrap">...</div>
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
Flex 项目
<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