好的,阿杰~我来给你整理一份 弹性布局(Flexbox)属性详解,适合新手和进阶都能看懂。
🧩 弹性布局(display:flex;)属性详解
display:flex;
让容器成为 弹性容器 (flex container),其直接子元素是 弹性项目 (flex items)。
主要分为两类属性:
1️⃣ 容器属性(作用于父元素)
.container {
display: flex; /* 激活弹性布局 */
}
(1)主轴方向
flex-direction
row
(默认) → 主轴为水平方向,项目从左到右row-reverse
→ 水平从右到左column
→ 主轴为垂直方向,从上到下column-reverse
→ 垂直从下到上
(2)是否换行
flex-wrap
nowrap
(默认) → 不换行,项目会被压缩wrap
→ 超出自动换行,从上到下wrap-reverse
→ 换行,但从下往上
⚡ 常用组合:
flex-flow: row wrap; /* direction + wrap */
(3)主轴对齐方式
justify-content
flex-start
(默认) → 靠左/上flex-end
→ 靠右/下center
→ 居中space-between
→ 两端对齐,项目间距均匀space-around
→ 项目间距均匀,首尾有空隙space-evenly
→ 项目和首尾间隔完全相等
(4)交叉轴对齐方式
align-items
stretch
(默认) → 拉伸填满flex-start
→ 顶部对齐flex-end
→ 底部对齐center
→ 垂直居中baseline
→ 文字基线对齐
(5)多行交叉轴对齐
align-content
(仅对多行生效)flex-start
→ 所有行靠上flex-end
→ 所有行靠下center
→ 所有行居中space-between
→ 各行两端对齐space-around
→ 行间距均匀,边缘有空隙stretch
(默认) → 拉伸均分容器高度
2️⃣ 项目属性(作用于子元素)
(1)顺序
order: n
(默认 0,值越小越靠前)
(2)放大比例
flex-grow: n
(默认 0,表示不会放大)- 如果所有项目都
flex-grow:1
,则等比填满容器
- 如果所有项目都
(3)缩小比例
flex-shrink: n
(默认 1,允许被压缩)- 设置 0 表示不缩小
(4)项目初始大小
flex-basis: auto | <px/%>
优先级高于width
(5)综合简写
flex: grow shrink basis
.item {
flex: 1; /* 等价于 flex: 1 1 0% */
flex: 0 0 100px; /* 固定宽度 100px,不缩放 */
}
(6)单独对齐
align-self
- 覆盖
align-items
,取值相同:auto | flex-start | flex-end | center | baseline | stretch
- 覆盖
3️⃣ 常用布局示例
居中对齐(经典)
.container {
display: flex;
justify-content: center; /* 水平居中 */
align-items: center; /* 垂直居中 */
}
两栏自适应
.container {
display: flex;
}
.left {
flex: 0 0 200px; /* 固定宽度 */
}
.right {
flex: 1; /* 占满剩余空间 */
}
✨ 总结:
- 父容器主要控制 布局走向和对齐
- 子项目主要控制 大小、伸缩、顺序
发表回复