已合作成功的客户
遍及全国及海外
中国
杭州,绍兴,宁波,湖州,嘉兴,温州,台州,上海,北京,南京,苏州,常州,无锡,长沙,青岛,江西,台湾,南宁,海南,成都,哈尔滨,深圳,香港,沈阳 ...
海外
美国,加拿大,丹麦,澳大利亚,新加坡,法国,智利,日本,英国 ...
合作咨询
4001-355-360
CSS 弹性盒子(Flex)布局详解
作者:admin
来源:lanyunwork
时间:2025-10-31
分享到:
CSS 弹性盒子布局(Flexible Box Layout,简称 Flex)是一种一维布局模型,旨在为容器中的项目提供更有效的排列、对齐和空间分配方式。弹性布局能够自动调整子元素的大小和位置,以适应不同屏幕尺寸和设备。
定义容器为弹性容器
.container {
display: flex; /* 块级弹性容器 */
display: inline-flex; /* 行内弹性容器 */
}
定义主轴方向(项目的排列方向)
.container {
flex-direction: row; /* 默认值,水平排列,从左到右 */
flex-direction: row-reverse; /* 水平排列,从右到左 */
flex-direction: column; /* 垂直排列,从上到下 */
flex-direction: column-reverse; /* 垂直排列,从下到上 */
}
定义项目是否换行
.container {
flex-wrap: nowrap; /* 默认值,不换行 */
flex-wrap: wrap; /* 换行,第一行在上方 */
flex-wrap: wrap-reverse; /* 换行,第一行在下方 */
}
flex-direction 和 flex-wrap 的简写形式
.container {
flex-flow: <flex-direction> <flex-wrap>;
}
定义项目在主轴上的对齐方式
.container {
justify-content: flex-start; /* 默认值,起始位置对齐 */
justify-content: flex-end; /* 结束位置对齐 */
justify-content: center; /* 居中对齐 */
justify-content: space-between; /* 两端对齐,项目间间隔相等 */
justify-content: space-around; /* 每个项目两侧间隔相等 */
justify-content: space-evenly; /* 项目间和两端间隔完全相等 */
}
定义项目在交叉轴上的对齐方式
.container {
align-items: stretch; /* 默认值,拉伸填满容器高度 */
align-items: flex-start; /* 交叉轴起始位置对齐 */
align-items: flex-end; /* 交叉轴结束位置对齐 */
align-items: center; /* 交叉轴居中对齐 */
align-items: baseline; /* 项目的第一行文字基线对齐 */
}
定义多根轴线的对齐方式(只有一行时无效)
.container {
align-content: stretch; /* 默认值,轴线占满整个交叉轴 */
align-content: flex-start; /* 交叉轴起始位置对齐 */
align-content: flex-end; /* 交叉轴结束位置对齐 */
align-content: center; /* 交叉轴居中对齐 */
align-content: space-between; /* 两端对齐,轴线间间隔相等 */
align-content: space-around; /* 每根轴线两侧间隔相等 */
}
定义项目的排列顺序
.item {
order: <integer>; /* 数值越小,排列越靠前,默认为0 */
}
定义项目的放大比例
.item {
flex-grow: <number>; /* 默认为0,即不放大 */
}
定义项目的缩小比例
.item {
flex-shrink: <number>; /* 默认为1,即空间不足时缩小 */
}
定义项目在分配多余空间之前的主轴尺寸
.item {
flex-basis: <length> | auto; /* 默认为auto */
}
flex-grow、flex-shrink 和 flex-basis 的简写
.item {
flex: none | [ <flex-grow> <flex-shrink>? || <flex-basis> ];
}
/* 常用值 */
flex: 0 1 auto; /* 默认值 */
flex: auto; /* 1 1 auto */
flex: none; /* 0 0 auto */
flex: 1; /* 1 1 0% */
允许单个项目有与其他项目不同的对齐方式
.item {
align-self: auto; /* 默认值,继承容器的align-items */
align-self: flex-start;
align-self: flex-end;
align-self: center;
align-self: baseline;
align-self: stretch;
}
弹性盒子布局通过简洁的属性设置,实现了强大的布局控制能力。容器属性控制整体布局方向、换行和对齐方式,而项目属性则允许对单个元素进行精细调整。这种布局方式特别适合构建响应式界面和组件级别的布局需求。
获取方案