📄 主内容区
flex: 1 → 剩下的空间全归我
到目前为止,你放元素它们都是一块块从上往下叠(像叠石头 🪨)。
可真实的网页不是这样排的——导航栏横着排、卡片一行三个、内容要水平垂直居中。
| 默认排版(没有 Flex) | Flexbox 排版 | |
|---|---|---|
| 排列方向 | 从上往下堆 | 想横就横、想竖就竖 |
| 水平居中 | 各种歪招 | justify-content: center 一句搞定 |
| 两端分开 | 手动算宽度 | space-between 一句搞定 |
| 剩余空间 | 空着浪费 | flex: 1 自动吃满 |
Flexbox 就像给盒子装上了"智能排队系统"——盒子里的元素听你指挥,指哪排哪。它是现代网页布局的必备技能,也是大学课程和面试的高频考点。
🛒 容器(父盒子):开了 flex 的那个大盒子,负责指挥
🧍 项目(子元素):大盒子里面装的东西,负责听话
在容器上加 display: flex,它里面所有子元素立刻进入"弹性排队模式"。
下面四个彩色盒子,用按钮随便摆弄,效果立刻可见 👇
🧭 排队方向 flex-direction
🎪 主轴站位 justify-content
📏 交叉轴对齐 align-items
↔️ 间距 gap
主轴 = 排队的方向(横排时是"横",竖排时是"竖")
交叉轴 = 和主轴垂直的方向
justify-content 管左右、align-items 管上下;| 值 | 效果 | 比喻 |
|---|---|---|
flex-start | 挤在起点 | 大家都挤在车头 |
center | 整体居中 | 都站到车厢中间 |
flex-end | 挤在终点 | 都挤在车尾 |
space-between | 两端贴边、中间平均 | 头尾各一个,中间的人平均分位置 |
space-around | 每人前后空隙相等 | 每个人左右留一样的位置 |
space-evenly | 所有空隙完全相等 | 最公平:人和人、人和墙之间都一样宽 |
四个盒子高度不一样(2 最高、3 没写高度),就像高矮不同的同学站一排:
| 值 | 效果 | 比喻 |
|---|---|---|
flex-start | 顶部对齐 | 对齐头顶 |
center | 垂直居中 | 对齐胸口 |
flex-end | 底部对齐 | 对齐脚底 |
stretch | 拉满整个高度 | 统一拉成一样高 |
💡 3 号盒子故意没写高度——点"拉满"和"居中对齐",看它怎么变化!
做网页软件最常见的一招:左边固定侧边栏 + 右边内容区自动占满剩余。
flex: 1 就像橡皮筋——谁写了它,谁就把所有空闲位置拉过来占满。flex: 2 则比 flex: 1 多占一倍(按比例分)。
让一个东西水平垂直都居中,就这三句:
卡片太多塞不下怎么办?flex-wrap: wrap 让它们自动换行,绝不挤扁。
试试把浏览器窗口拉窄,卡片会自动换行 🪄
justify-content 和 align-items 的角色互换width: 200px,颜色浅灰)flex-wrap: wrap 改成 nowrap,保存刷新,看卡片被挤成什么样
操作方式:用记事本打开 C:\Users\HP\lesson1\lesson5-flexbox.html → 改代码 → 保存 → 刷新浏览器看效果。
| 属性 | 作用 | 常用值 |
|---|---|---|
display: flex | 打开弹性模式(咒语) | 写在容器上 |
flex-direction | 排队方向 | row / column |
justify-content | 主轴上的站位 | center / space-between / space-evenly |
align-items | 交叉轴上的对齐 | center / flex-start / stretch |
gap | 项目之间的间距 | 10px 等 |
flex: 1 | 吃掉剩余空间 | 写在项目上 |
flex-wrap | 自动换行 | wrap |
你已经有完整能力做一个像样的网站了,接下来建议:
| 🏠 | 完整小项目:个人主页 | HTML + CSS + JS + Flexbox 全用上,把学到的东西焊死 |
| 💾 | JS 进阶②:localStorage | 让待办清单"刷新不丢",网页第一次拥有记忆 |
| 📱 | 响应式设计 | 同一个页面,手机电脑都好看 |
告诉我你想学哪个,或者直接说"下一课" 🚀