CSS: Flexbox 项目属性

最后更新:2026-10-13

flex 容器属性控制"整体"行为,而项目属性则控制每个子元素"个体"的行为。通过项目属性,你可以控制每个项目的排列顺序、尺寸伸缩和对齐方式。

本节涉及属性: order flex-grow flex-shrink flex-basis flex align-self width align-items

1. 项目属性一览

属性 作用 默认值
order 控制排列顺序 0
flex-grow 伸展比例(有剩余空间时) 0
💡 flex: 1 的含义: flex: 1 其实是 flex-grow: 1 的简写。它表示"尽量占满剩余空间",等分布局里最常用。如果有两个项目都设了 flex: 1,它们各占 50%。 | flex-shrink | 收缩比例(空间不足时) | 1 | | flex-basis | 初始尺寸 | auto | | flex | 以上三个的简写 | 0 1 auto | | align-self | 单独对齐方式 | auto |


2. order:排序

改变项目的视觉顺序,不影响 HTML 结构:

▶ 示例

▶ 试一试

规则:


3. flex-grow:伸展比例

当容器有剩余空间时,项目按比例瓜分剩余空间:

▶ 示例

▶ 试一试

规则:


4. flex-shrink:收缩比例

当容器空间不足时,项目按比例缩小:

▶ 示例

▶ 试一试

规则:


5. flex-basis:初始尺寸

设置在分配剩余空间之前,项目在主轴上的基础尺寸:

▶ 示例

▶ 试一试

注意:在 flex 布局中,flex-basis 的优先级高于 width。如果同时设置了 width 和 flex-basis,浏览器优先使用 flex-basis。


6. flex:弹性简写

flex 是 flex-grow、flex-shrink、flex-basis 的简写:

▶ 示例

▶ 试一试

(1) 常用取值

▶ 示例

▶ 试一试

建议:优先使用 flex 简写属性,而不是分开写 grow/shrink/basis,因为浏览器会相应的推算相关值。


7. align-self:单独对齐

覆盖容器的 align-items,让某个项目与众不同:

▶ 示例

▶ 试一试

常用值:auto、flex-start、flex-end、center、stretch、baseline


8. 综合示例

▶ 示例

▶ 试一试

本节涉及属性: order flex-grow flex-shrink flex-basis flex align-self width align-items

❓ 常见问题

Q flex: 1 是什么意思?
A flex: 1 是 flex-grow: 1; flex-shrink: 1; flex-basis: 0%; 的简写,表示"尽可能占满剩余空间"。多个项目都设 flex: 1 时,它们会等分容器宽度。
Q order 属性会影响 DOM 顺序吗?
A 不会。order 只改变视觉排列顺序,DOM 顺序不变。屏幕阅读器仍然按 DOM 顺序朗读,所以不要用 order 做只有视觉意义的排序——会影响无障碍体验。
Q align-self 和 align-items 谁优先级高?
A align-self 优先级更高。align-self 作用于单个项目,覆盖父容器 align-items 的设置。比如父容器设 align-items: center 居中对齐,但某个子元素可以设 align-self: flex-start 单独靠上。

📖 小节

📝 作业

  1. 创建一个 flex 容器,内含 5 个项目。使用 order 属性让第 3 个项目显示在最前面,第 1 个项目显示在最后面。
  2. 使用 flex-grow 实现"三栏等宽"布局,再让中间栏是两侧的两倍宽。
  3. 创建一个"固定侧栏 + 自适应内容"的布局:侧栏使用 flex: 0 0 250px,内容区使用 flex: 1。
  4. 在一个容器中,让前两个项目顶部对齐,第三个项目底部对齐,使用 align-self 实现。
Web-Tutorial.com

Web-Tutorial 技术团队

由多位开发者共同维护的编程教程平台。每篇教程由对应领域的开发者编写和审核,确保内容准确可靠。如发现任何问题,欢迎向我们反馈。

100%

🙏 帮我们做得更好

我们是刚上线的编程教程站,几个人的小团队,精力有限。页面虽经检查,难免还有疏漏——链接失效、排版错乱、内容有误、语言生硬……

如果您发现了,麻烦告诉我们,我们会在收到反馈后第一时间进行修复,再次感谢您的光临 🙏