Bootstrap

前端必知必会-CSS Flex布局


CSS Flexbox

CSS Flexbox 布局模块

在 Flexbox 布局模块出现之前,有四种布局模式:

  • Block,用于网页中的部分
  • Inline,用于文本
  • Table,用于二维表格数据
  • Positioned,用于元素的明确位置
    Flexible Box 布局模块可以更轻松地设计灵活的响应式布局结构,而无需使用浮动或定位。

Flexbox 元素

要开始使用 Flexbox 模型,您需要先定义一个 Flex 容器。
在这里插入图片描述

上面的元素表示一个带有三个 Flex 项目的 Flex 容器(蓝色区域)。

示例
带有三个弹性项目的弹性容器:

<div class="flex-container">
<div>1</div>
<div>2</div>
<div>3</div>
</div>

CSS flex容器

这是一个包含三个弹性项目的弹性容器(蓝色区域):
在这里插入图片描述

通过将 display 属性设置为 flex,弹性容器将变得灵活:

示例

.flex-container {
display: flex;
}

弹性容器属性为:

  • flex-direction
  • flex-wrap
  • flex-flow
  • justify-content
  • align-items
  • align-content

flex-direction 属性

flex-direction 属性定义容器要堆叠弹性项目的方向。
在这里插入图片描述

示例
column 值垂直堆叠弹性项目(从上到下):

.flex-container {
display: flex;
flex-direction: column;
}

示例
column-reverse 值垂直堆叠 flex 项(但从下到上):

.flex-container {
display: flex;
flex-direction: column-reverse;
}

示例
row 值水平堆叠 flex 项(从左到右):

.flex-container {
display: flex;
flex-direction: row;
}

示例
row-reverse 值水平堆叠 flex 项(但从右到左):

.flex-container {
display: flex;
flex-direction: row-reverse;
}

flex-wrap 属性

flex-wrap 属性指定 flex 项是否应换行。

以下示例有 12 个 flex 项,以更好地演示 flex-wrap 属性。
在这里插入图片描述

示例
wrap 值指定弹性项目在必要时将换行:

.flex-container {
display: flex;
flex-wrap: wrap;
}

示例
nowrap 值指定弹性项目不会换行(这是默认值):

.flex-container {
display: flex;
flex-wrap: nowrap;
}

示例
wrap-reverse 值指定弹性项目在必要时将以相反的顺序换行:

.flex-container {
display: flex;
flex-wrap: wrap-reverse;
}

flex-flow 属性

flex-flow 属性是用于设置 flex-direction 和 flex-wrap 属性的简写属性。

示例

.flex-container {
display: flex;
flex-flow: row wrap;
}

justify-content 属性

justify-content 属性用于对齐弹性项目:
在这里插入图片描述

示例
center 值将弹性项目对齐到容器的中心:

.flex-container {
display: flex;
justify-content: center;
}

示例
flex-start 值将弹性项目对齐到容器的开头(这是默认值):

.flex-container {
display: flex;
justify-content: flex-start;
}

示例
flex-end 值将弹性项目对齐到容器的末尾:

.flex-container {
display: flex;
justify-content: flex-end;
}

示例
space-around 值显示弹性项目时,行前、行间和行后均留有空格:

.flex-container {
display: flex;
justify-content: space-around;
}

示例
space-between 值显示弹性项目,行与行之间留有空间:

.flex-container {
display: flex;
justify-content: space-between;
}

align-items 属性

align-items 属性用于对齐弹性项目。
在这里插入图片描述

在这些示例中,我们使用 200 像素高的容器,以更好地演示 align-items 属性。

示例
center 值将弹性项目对齐到容器中间:

.flex-container {
display: flex;
height: 200px;
align-items: center;
}

示例
flex-start 值将弹性项目对齐到容器顶部:

.flex-container {
display: flex;
height: 200px;
align-items: flex-start;
}

示例
flex-end 值将 flex 项目与容器底部对齐:

.flex-container {
display: flex;
height: 200px;
align-items: flex-end;
}

示例
stretch 值将 flex 项目拉伸以填充容器(这是默认值):

.flex-container {
display: flex;
height: 200px;
align-items: stretch;
}

示例
baseline 值将 flex 项目与基线对齐:

.flex-container {
display: flex;
height: 200px;
align-items: baseline;
}

注意:示例使用不同的 font-size 来演示项目与文本基线对齐:
在这里插入图片描述

align-content 属性

align-content 属性用于对齐 flex 行。
在这里插入图片描述

在这些示例中,我们使用一个 600 像素高的容器,并将 flex-wrap 属性设置为 wrap,以更好地演示 align-content 属性。

示例
space-between 值显示弹性线之间有相等的间距:

.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: space-between;
}

示例
space-around 值显示弹性线之前、之间和之后有间距:

.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: space-around;
}

示例
stretch 值拉伸弹性线以占据剩余空间(这是默认值):

.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: stretch;
}

示例
center 值在容器中间显示弹性线:

.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: center;
}

示例
flex-start 值在容器的开始处显示弹性线:

.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: flex-start;
}

示例
flex-end 值在容器的末尾显示弹性线:

.flex-container {
display: flex;
height: 600px;
flex-wrap: wrap;
align-content: flex-end;
}

完美居中

在下面的示例中,我们将解决一个非常常见的样式问题:完美居中。

解决方案:将 justify-content 和 align-items 属性都设置为 center,这样 flex 项目就会完全居中:

示例

.flex-container {
display: flex;
height: 300px;
justify-content: center;
align-items: center;
}

CSS Flexbox 容器属性

下表列出了所有 CSS Flexbox 容器属性:

属性描述
align-content修改 flex-wrap 属性的行为。它类似于 align-items,但它对齐的是弹性项目,而不是弹性行
align-items当弹性项目未使用横轴上的所有可用空间时,垂直对齐弹性项目
display指定用于 HTML 元素的框类型
flex-direction指定弹性容器内弹性项目的方向
flex-flowflex-direction 和 flex-wrap 的简写属性
flex-wrap指定弹性项目是否应换行(如果一条弹性行上没有足够的空间)
justify-content当弹性项目未使用主轴上的所有可用空间时,水平对齐弹性项目

总结

本文介绍了CSS Flex布局的使用,如有问题欢迎私信和评论

;