Flexbox 是现代 CSS 布局的主力方案:导航栏、卡片列表、居中对齐,几乎都离不开它。这篇文章用最短篇幅讲清楚 Flex 的核心概念和常用属性。
两个基本概念:主轴与交叉轴
开启 Flex 后,容器内部有两条看不见的轴:
- 主轴:默认水平方向,子元素沿着它依次排列
- 交叉轴:与主轴垂直的方向
所有对齐属性都围绕这两条轴工作,理解了轴,属性名就不难记了。
.container {
display: flex;
}
容器上的常用属性
.container {
display: flex;
/* 主轴对齐:开头 | 居中 | 结尾 | 两端 | 均分 */
justify-content: space-between;
/* 交叉轴对齐:拉伸 | 居中 | 开头 | 结尾 */
align-items: center;
/* 放不下时换行 */
flex-wrap: wrap;
/* 子元素之间的间距 */
gap: 16px;
}
经典的"水平垂直居中",两行搞定:
.center {
display: flex;
justify-content: center;
align-items: center;
}
子元素上的常用属性
.item {
/* 放大:空间多余时按比例扩展,默认 0 */
flex-grow: 1;
/* 缩小:空间不足时允许收缩,默认 1 */
flex-shrink: 1;
/* 初始尺寸 */
flex-basis: 200px;
/* 上面三个的简写,最常用 */
flex: 1;
/* 单个子元素的交叉轴对齐 */
align-self: flex-end;
/* 排列顺序,数字越小越靠前 */
order: -1;
}
实际项目里最常用的组合是 flex: 1:让某个元素吃掉剩余空间,比如"左侧固定、右侧自适应"的两栏布局。
.layout {
display: flex;
}
.sidebar {
width: 240px; /* 固定宽度 */
}
.main {
flex: 1; /* 占满剩余空间 */
}
换行布局:自适应卡片列表
.cards {
display: flex;
flex-wrap: wrap;
gap: 16px;
}
.card {
/* 每张卡片基准 200px,能放几张放几张 */
flex: 1 1 200px;
}
配合 flex-wrap: wrap,不写媒体查询也能得到响应式的卡片列表。
改变主轴方向
.container {
display: flex;
flex-direction: column; /* 主轴变为垂直方向 */
justify-content: center; /* 此时在垂直方向居中 */
gap: 8px;
}
移动端"内容上下排列"的场景,用 column 加 gap 就很顺手。
小结
display: flex开启布局,先想清楚主轴方向- 主轴对齐用
justify-content,交叉轴对齐用align-items - 子元素记住一个
flex: 1,解决大部分伸缩需求 - 用
gap代替 margin 拼间距,代码更干净 - 放不下就
flex-wrap: wrap
Flex 能覆盖八成日常布局,把这几个属性用熟,大部分页面骨架就搭起来了。



评论 0
还没有评论,来抢沙发吧~ 🛋