Flex布局中等高列的核心是父容器设display: flex,子项默认align-items: stretch实现等高;横向布局时子项高度自动等高,纵向时宽度等宽;避免设置height、align-self等覆盖stretch行为。
Flex 布局中实现等高列非常简单,核心就是让容器启用 flex,并设置 align-items: stretch(这是默认值,通常无需显式书写)。
给父元素设置 display: flex 或 display: inline-flex,子元素就会自动成为 flex 项。此时只要子项没有设置固定高度、min-height 或 align-self 覆盖,默认就会被拉伸填满容器高度。
height、max-height 或 align-self: flex-start 等,会覆盖 stretch 行为HTML 结构:
CSS:
.container {
省略 */虽然 align-items: stretch 是 flex 默认行为,但实际不等高的常见原因有:
max-height),需检查是否触发了收缩display: table-cell 或绝对定位脱离文档流,可能影响 stretch 效果min-height: 100% 在 flex 子项中支持不佳,建议避免混用-ms-flex-align: stretch 兼容(若需支持)可以安全地给子项加 min-height,stretch 仍生效(只要内容没超过该值);若内容超了,子项会自动增高,其他列也会同步拉高 —— 这正是等高列的预期行为。
min-height: 100px(保底高度,不破坏等高)height: 200px(强制固定高度,会切断 stretch)align-self: stretch(显式重申,增强可读性)