Bootstrap 5 Flex 布局
弹性盒模型
Bootstrap 3 和 Bootstrap 4 & 5 之间最大的区别在于 Bootstrap 5 现在使用 flexbox,而不是浮动来处理布局。
弹性盒布局模块使设计灵活的响应式布局结构变得更容易,而无需使用浮动或定位。如果您不熟悉 flex,您可以在我们的 CSS Flexbox 教程 中了解更多信息。
注意:Flexbox 在 IE9 及更早版本中不受支持。
如果您需要 IE8-9 支持,请使用 Bootstrap 3。它是 Bootstrap 最稳定的版本,并且仍然得到团队支持进行关键错误修复和文档更改。但是,将不会添加任何新功能。
要创建 flexbox 容器并将直接子元素转换为 flex 项目,请使用 d-flex
类
示例
示例
<div class="d-flex p-3 bg-secondary text-white">
<div class="p-2 bg-info">Flex 项目 1</div>
<div class="p-2 bg-warning">Flex 项目 2</div>
<div class="p-2 bg-primary">Flex 项目 3</div>
</div>
自己试一试 »要创建内联 flexbox 容器,请使用 d-inline-flex
类
示例
示例
<div class="d-inline-flex p-3 bg-secondary text-white">
<div class="p-2 bg-info">Flex 项目 1</div>
<div class="p-2 bg-warning">Flex 项目 2</div>
<div class="p-2 bg-primary">Flex 项目 3</div>
</div>
自己试一试 »水平方向
使用 .flex-row
将 flex 项目水平显示(并排)。这是默认设置。
提示:使用 .flex-row-reverse
对齐水平方向。
示例
示例
<div class="d-flex flex-row bg-secondary">
<div class="p-2 bg-info">Flex 项目 1</div>
<div class="p-2 bg-warning">Flex 项目 2</div>
<div class="p-2 bg-primary">Flex 项目 3</div>
</div>
<div class="d-flex flex-row-reverse bg-secondary">
<div class="p-2 bg-info">Flex 项目 1</div>
<div class="p-2 bg-warning">Flex 项目 2</div>
<div class="p-2 bg-primary">Flex 项目 3</div>
</div>
自己试一试 »垂直方向
使用 .flex-column
将 flex 项目垂直显示(彼此之上),或使用 .flex-column-reverse
反转垂直方向。
示例
示例
<div class="d-flex flex-column">
<div class="p-2 bg-info">Flex 项目 1</div>
<div class="p-2 bg-warning">Flex 项目 2</div>
<div class="p-2 bg-primary">Flex 项目 3</div>
</div>
<div class="d-flex flex-column-reverse">
<div class="p-2 bg-info">Flex 项目 1</div>
<div class="p-2 bg-warning">Flex 项目 2</div>
<div class="p-2 bg-primary">Flex 项目 3</div>
</div>
自己试一试 »对齐内容
使用 .justify-content-*
类更改 flex 项目的对齐方式。有效的类是 start
(默认)、end
、center
、between
或 around
示例
示例
<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>
自己试一试 »填充/等宽
在 flex 项目上使用 .flex-fill
强制它们具有相等的宽度。
示例
示例
<div class="d-flex">
<div class="p-2 bg-info flex-fill">Flex 项目 1</div>
<div class="p-2 bg-warning flex-fill">Flex 项目 2</div>
<div class="p-2 bg-primary flex-fill">Flex 项目 3</div>
</div>
自己试一试 »增长
在 flex 项目上使用 .flex-grow-1
以占用剩余的空间。在下面的示例中,前两个 flex 项目占用其必要空间,而最后一个项目占用剩余的可用空间。
示例
示例
<div class="d-flex">
<div class="p-2 bg-info">Flex 项目 1</div>
<div class="p-2 bg-warning">Flex 项目 2</div>
<div class="p-2 bg-primary flex-grow-1">Flex 项目 3</div>
</div>
自己试一试 »提示:在 flex 项目上使用 .flex-shrink-1
使其在必要时收缩。
顺序
使用 .order
类更改特定 flex 项目的视觉顺序。有效的类是从 0 到 5,其中数字越小,优先级越高(order-1 显示在 order-2 之前,等等)。
示例
示例
<div class="d-flex bg-secondary">
<div class="p-2 bg-info order-3">Flex 项目 1</div>
<div class="p-2 bg-warning order-2">Flex 项目 2</div>
<div class="p-2 bg-primary order-1">Flex 项目 3</div>
</div>
自己试一试 »自动边距
使用 .ms-auto
(将项目推向右侧)或使用 .me-auto
(将项目推向左侧)轻松地向 flex 项目添加自动边距。
示例
示例
<div class="d-flex bg-secondary">
<div class="p-2 ms-auto bg-info">Flex 项目 1</div>
<div class="p-2 bg-warning">Flex 项目 2</div>
<div class="p-2 bg-primary">Flex 项目 3</div>
</div>
<div class="d-flex bg-secondary">
<div class="p-2 bg-info">Flex 项目 1</div>
<div class="p-2 bg-warning">Flex 项目 2</div>
<div class="p-2 me-auto bg-primary">Flex 项目 3</div>
</div>
自己试一试 »换行
使用 .flex-nowrap
(默认)、.flex-wrap
或 .flex-wrap-reverse
控制 flex 项目在 flex 容器中的换行方式。
单击下面的按钮,通过更改示例框中 flex 项目的换行方式,查看这三个类之间的区别。
示例
示例
<div class="d-flex flex-wrap">..</div>
<div class="d-flex flex-wrap-reverse">..</div>
<div class="d-flex flex-nowrap">..</div>
自己试一试 »对齐内容
使用 .align-content-*
类控制 **聚集** flex 项目的垂直对齐方式。有效的类是 .align-content-start
(默认)、.align-content-end
、.align-content-center
、.align-content-between
、.align-content-around
和 .align-content-stretch
。
注意:这些类对 flex 项目的单行没有影响。
示例
示例
<div class="d-flex flex-wrap align-content-start">..</div>
<div class="d-flex flex-wrap align-content-end">..</div>
<div class="d-flex flex-wrap align-content-center">..</div>
<div class="d-flex flex-wrap align-content-around">..</div>
<div class="d-flex flex-wrap align-content-stretch">..</div>
自己试一试 »对齐项目
使用 .align-items-*
类控制 **单行** flex 项目的垂直对齐方式。有效的类是 .align-items-start
、.align-items-end
、.align-items-center
、.align-items-baseline
和 .align-items-stretch
(默认)。
单击下面的按钮查看五个类之间的区别。
示例
示例
<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-self-*
类控制 **特定 flex 项目** 的垂直对齐方式。有效的类是 .align-self-start
、.align-self-end
、.align-self-center
、.align-self-baseline
和 .align-self-stretch
(默认)。
单击下面的按钮查看五个类之间的区别。
示例
示例
<div class="d-flex bg-light" style="height:150px">
<div class="p-2 border">Flex 项目 1</div>
<div class="p-2 border align-self-start">Flex 项目 2</div>
<div class="p-2 border">Flex 项目 3</div>
</div>
自己试一试 »响应式 Flex 类
所有 flex 类都带有额外的响应式类,这使得在特定屏幕尺寸上设置特定 flex 类变得容易。
符号 *
可以被 sm、md、lg、xl 或 xxl 替换,分别代表小屏幕、中等屏幕、大屏幕、超大屏幕和特大屏幕。
类 | 描述 | 示例 |
---|---|---|
Flex 容器 | ||
.d-*-flex |
为不同屏幕创建 flexbox 容器 | 尝试一下 |
.d-*-inline-flex |
为不同屏幕创建内联 flexbox 容器 | 尝试一下 |
方向 | ||
.flex-*-row |
在不同屏幕上水平显示 flex 项目 | 尝试一下 |
.flex-*-row-reverse |
在不同屏幕上水平显示 flex 项目,并右对齐 | 尝试一下 |
.flex-*-column |
在不同屏幕上垂直显示 flex 项目 | 尝试一下 |
.flex-*-column-reverse |
在不同屏幕上垂直显示 flex 项目,并反转顺序 | 尝试一下 |
对齐内容 | ||
.justify-content-*-start |
在不同屏幕上从起始位置(左对齐)显示 flex 项目 | 尝试一下 |
.justify-content-*-end |
在不同屏幕上从结束位置(右对齐)显示 flex 项目 | 尝试一下 |
.justify-content-*-center |
在不同屏幕上将 flex 项目显示在 flex 容器的中心 | 尝试一下 |
.justify-content-*-between |
在不同屏幕上将 flex 项目显示在“之间” | 尝试一下 |
.justify-content-*-around |
在不同屏幕上将 flex 项目显示在“周围” | 尝试一下 |
填充/等宽 | ||
.flex-*-fill |
强制 flex 项目在不同屏幕上具有相等的宽度 | 尝试一下 |
增长 | ||
.flex-*-grow-0 |
在不同屏幕上不要让项目增长 | |
.flex-*-grow-1 |
在不同屏幕上让项目增长 | |
缩小 | ||
.flex-*-shrink-0 |
在不同屏幕上不要让项目缩小 | |
.flex-*-shrink-1 |
在不同屏幕上让项目缩小 | |
顺序 | ||
.order-*-0-12 |
在小屏幕上更改顺序,从 0 到 5 | 尝试一下 |
换行 | ||
.flex-*-nowrap |
在不同屏幕上不要换行项目 | 尝试一下 |
.flex-*-wrap |
在不同屏幕上换行项目 | 尝试一下 |
.flex-*-wrap-reverse |
在不同屏幕上反转项目换行 | 尝试一下 |
对齐内容 | ||
.align-content-*-start |
在不同屏幕上从起始位置对齐收集的项目 | 尝试一下 |
.align-content-*-end |
在不同屏幕上从结束位置对齐收集的项目 | 尝试一下 |
.align-content-*-center |
在不同屏幕上将收集的项目对齐到中心 | 尝试一下 |
.align-content-*-around |
在不同屏幕上将收集的项目对齐到“周围” | 尝试一下 |
.align-content-*-stretch |
在不同屏幕上拉伸收集的项目 | 尝试一下 |
对齐项目 | ||
.align-items-*-start |
在不同屏幕上从起始位置对齐单行项目 | 尝试一下 |
.align-items-*-end |
在不同屏幕上从结束位置对齐单行项目 | 尝试一下 |
.align-items-*-center |
在不同屏幕上将单行项目对齐到中心 | 尝试一下 |
.align-items-*-baseline |
在不同屏幕上将单行项目对齐到基线 | 尝试一下 |
.align-items-*-stretch |
在不同屏幕上拉伸单行项目 | 尝试一下 |
自身对齐 | ||
.align-self-*-start |
在不同屏幕上从起始位置对齐一个 flex 项目 | 尝试一下 |
.align-self-*-end |
在不同屏幕上从结束位置对齐一个 flex 项目 | 尝试一下 |
.align-self-*-center |
在不同屏幕上将一个 flex 项目对齐到中心 | 尝试一下 |
.align-self-*-baseline |
在不同屏幕上将一个 flex 项目对齐到基线 | 尝试一下 |
.align-self-*-stretch |
在不同屏幕上拉伸一个 flex 项目 | 尝试一下 |