纯CSS用display:flex+align-items:stretch即可实现多列等高;Sass无法动态感知高度,其编译时计算对等高无效,且会覆盖拉伸逻辑。

纯 CSS 就能实现多列等高,根本不需要 Sass 计算 Flex 参数——align-items: stretch 是默认行为,加 display: flex 就够了;Sass 在这里不解决任何实际问题,反而增加冗余和维护成本。
为什么不用 Sass 算 flex-basis 或 height
Sass 无法动态感知内容高度,所有“计算”都是编译时静态值,对等高布局毫无意义:
-
flex-basis控制主轴初始尺寸(比如宽度),和等高无关 - 写
height: calc(...)或用 Sass 变量赋值高度,会直接覆盖align-items: stretch的拉伸逻辑 - 若列数由数据驱动(如
v-for渲染),Sass 根本无从得知列数,更谈不上“计算”
真正起作用的只有三个 CSS 属性
等高效果只依赖容器和子项的渲染时行为,不是靠预计算:
- 父容器必须有
display: flex(或inline-flex) - 父容器不能显式设
align-items: flex-start等值(保持默认stretch) - 子项不能设
height、max-height,也不能设align-self: flex-start
常见误用:用 Sass 生成重复类名
有人写 Sass 循环生成 .col-1 ~ .col-6 并配不同 flex 值,以为能“适配列数”。这完全偏离目标:
立即学习“前端免费学习笔记(深入)”;
- 等高不依赖列数,哪怕只有两列或十列,
stretch都生效 - 列宽控制用
flex: 1或flex: 0 0 200px即可,无需按数量写死 - 响应式场景下,
flex-wrap+min-width比硬编码类更可靠
最易被忽略的是父容器高度来源:如果它没内容、没 min-height、也没固定 height,那么即使所有条件都满足,视觉上仍像“不等高”——因为 stretch 是拉伸到容器当前交叉轴尺寸,而这个尺寸此时就是最高子项的内容高度。这不是 bug,是机制本身。


















