Flexbox是一种一维布局模型,能够更有效地对容器中的元素进行排列、对齐和分配空间。Bootstrap 4全面采用Flexbox作为其布局系统的基础,提供了丰富的Flex工具类来简化布局开发。
使用.d-flex和.d-inline-flex类创建Flex容器。
<!-- 块级Flex容器 -->
<div class="d-flex">
<div>Flex项目 1</div>
<div>Flex项目 2</div>
<div>Flex项目 3</div>
</div>
<!-- 内联Flex容器 -->
<div class="d-inline-flex">
<div>内联Flex 1</div>
<div>内联Flex 2</div>
</div>
使用方向类控制Flex项目的排列方向。
<!-- 行方向 -->
<div class="d-flex flex-row">
<div>项目 1</div>
<div>项目 2</div>
<div>项目 3</div>
</div>
<!-- 行反向 -->
<div class="d-flex flex-row-reverse">
<div>项目 1</div>
<div>项目 2</div>
<div>项目 3</div>
</div>
<!-- 列方向 -->
<div class="d-flex flex-column">
<div>项目 1</div>
<div>项目 2</div>
<div>项目 3</div>
</div>
<!-- 列反向 -->
<div class="d-flex flex-column-reverse">
<div>项目 1</div>
<div>项目 2</div>
<div>项目 3</div>
</div>
使用.justify-content-*类控制Flex项目在主轴上的对齐方式。
<!-- 起始对齐 -->
<div class="d-flex justify-content-start">
<div>项目 1</div>
<div>项目 2</div>
<div>项目 3</div>
</div>
<!-- 居中对齐 -->
<div class="d-flex justify-content-center">
<div>项目 1</div>
<div>项目 2</div>
<div>项目 3</div>
</div>
<!-- 两端对齐 -->
<div class="d-flex justify-content-between">
<div>项目 1</div>
<div>项目 2</div>
<div>项目 3</div>
</div>
<!-- 等间距对齐 -->
<div class="d-flex justify-content-around">
<div>项目 1</div>
<div>项目 2</div>
<div>项目 3</div>
</div>
使用.align-items-*和.align-self-*类控制Flex项目在交叉轴上的对齐方式。
<!-- 居中对齐 -->
<div class="d-flex align-items-center">
<div>项目 1</div>
<div>项目 2</div>
<div>项目 3</div>
</div>
<!-- 单个项目对齐 -->
<div class="d-flex">
<div class="align-self-start">顶部对齐</div>
<div class="align-self-center">居中对齐</div>
<div class="align-self-end">底部对齐</div>
<div class="align-self-stretch">拉伸对齐</div>
</div>
控制Flex项目的填充、排序和伸缩比例。
<!-- 自动填充 -->
<div class="d-flex">
<div class="flex-fill">填充项目</div>
<div>固定项目</div>
<div class="flex-fill">填充项目</div>
</div>
<!-- Flex增长 -->
<div class="d-flex">
<div class="flex-grow-1">增长 1</div>
<div>不增长</div>
<div class="flex-grow-1">增长 1</div>
</div>
<!-- Flex排序 -->
<div class="d-flex">
<div class="order-3">第一项 (order-3)</div>
<div class="order-1">第二项 (order-1)</div>
<div class="order-2">第三项 (order-2)</div>
</div>
使用.flex-wrap类控制Flex项目是否换行。
<!-- 不换行 -->
<div class="d-flex flex-nowrap">
<div style="min-width: 150px;">宽项目 1</div>
<div style="min-width: 150px;">宽项目 2</div>
<div style="min-width: 150px;">宽项目 3</div>
<div style="min-width: 150px;">宽项目 4</div>
<div style="min-width: 150px;">宽项目 5</div>
</div>
<!-- 换行 -->
<div class="d-flex flex-wrap">
<div style="min-width: 150px;">宽项目 1</div>
<div style="min-width: 150px;">宽项目 2</div>
<div style="min-width: 150px;">宽项目 3</div>
<div style="min-width: 150px;">宽项目 4</div>
<div style="min-width: 150px;">宽项目 5</div>
</div>
Bootstrap 4提供了响应式的Flex类,可以在不同屏幕尺寸下应用不同的Flex属性。
<!-- 响应式Flex方向 -->
<div class="d-flex flex-column flex-md-row">
<div>小屏: 列</div>
<div>中屏+: 行</div>
<div>响应式布局</div>
</div>
<!-- 响应式对齐 -->
<div class="d-flex justify-content-start justify-content-md-center justify-content-lg-end">
<div>小屏: 左对齐</div>
<div>中屏: 居中对齐</div>
<div>大屏: 右对齐</div>
</div>
<!-- 响应式排序 -->
<div class="d-flex">
<div class="order-3 order-md-1">第一项 (小屏: 3)</div>
<div class="order-1 order-md-2">第二项 (小屏: 1)</div>
<div class="order-2 order-md-3">第三项 (小屏: 2)</div>
</div>
| 断点 | 类前缀 | 屏幕尺寸 |
|---|---|---|
| 超小屏 | .d-flex |
< 576px |
| 小屏 | .d-sm-flex |
≥ 576px |
| 中屏 | .d-md-flex |
≥ 768px |
| 大屏 | .d-lg-flex |
≥ 992px |
| 超大屏 | .d-xl-flex |
≥ 1200px |
Flex布局在实际项目中的应用场景。
这是一些卡片内容文本,使用flex-grow-1让内容区域填充剩余空间。
这是另一张卡片的内容。
<div class="card">
<div class="card-body d-flex flex-column">
<h5 class="card-title">卡片标题</h5>
<p class="card-text flex-grow-1">卡片内容文本</p>
<div class="d-flex justify-content-between align-items-center">
<span class="text-muted">¥99</span>
<button class="btn btn-primary">购买</button>
</div>
</div>
</div>
使用Flex布局时,遵循以下最佳实践可以提升开发效率和代码质量。
恭喜!您已经掌握了Bootstrap 4 Flex布局的使用方法。Flex布局是创建现代、响应式网页设计的重要工具,合理使用可以大大提高布局的灵活性和开发效率。
继续学习下一章:Bootstrap 4 工具类