本文详解如何使用 flexbox 的 `flex-wrap: wrap-reverse` 与 `align-content: flex-start` 实现子元素按固定尺寸自动换行、逆序排列并顶部对齐的布局效果。
要实现如题图所示的布局(5 个 80×50px 的红色边框方块,在 240×200px 容器内从上到下、从左到右排列,共两行:第一行 3 个,第二行 2 个,且整体“自上而下填满、右端留空”,视觉上呈现为逆序换行 + 顶部对齐),关键在于正确理解 Flexbox 的主轴(main axis) 与交叉轴(cross axis),以及 flex-wrap 和 align-content 的协同作用。
首先,容器需设为 Flex 容器:
.container {
display: flex; /* 启用 Flex 布局 */
width: 240px;
height: 200px;
border: 1px solid gray;
}由于每个子项宽 80px,容器总宽 240px,恰好可容纳 3 个(3 × 80 = 240),因此默认 flex-direction: row(主轴水平)下,第 4、5 个元素会自动换行至第二行。但题图中数字顺序是 1 2 3 在上排、4 5 在下排——这并非 DOM 顺序的自然结果,而是换行方向被反转后的视觉效果。
✅ 正确解法是:
完整 CSS 如下:
.container{ width: 240px; height: 200px; border: 1px solid gray; display: flex; flex-wrap: wrap-reverse; /* 关键:反向换行 */ align-content: flex-start; /* 关键:所有行顶部对齐 */ } .container > div { width: 80px; height: 50px; border: 1px solid red; box-sizing: border-box; /* 必须添加!确保 border 不撑大实际尺寸 */ }
⚠️ 注意事项:
最终效果:容器内严格分为两行,上行含 2 个元素(4、5),下行含 3 个元素(1、2、3),所有行紧贴容器顶部,间距由元素自身 margin 控制(本例无 margin),结构清晰、响应可控——这正是 Flexbox 多行对齐能力的典型应用。