Grid 多列默认等高需确保 align-items: stretch(默认值),排除子项 height/max-height/min-height 干扰及内容溢出影响,统一 padding/margin/box-sizing 并规范图片和文字样式。
Grid 多列布局默认就能等高,关键在于确保 align-items 设置为 stretch(这也是 Grid 的默认值),同时排除干扰高度的其他样式。
如果子项高度不一致,先检查父容器是否真正启用了 Grid,并确认没有意外设置 align-items: flex-start、align-item 等值覆盖了默认拉伸行为。
s: center
display: grid 或 display: inline-grid
align-items: start、align-items: center 等 —— 删除或显式重置为 align-items: stretch
align-items,建议在开发者工具中查看计算值即使 align-items: stretch 生效,若子项设置了 height、max-height、min-height,或内部内容触发了 overflow: hidden,也可能阻止拉伸。
height、max-height(除非你明确需要截断)min-height: auto 或 min-height: 0 —— 这会禁用 stretch 行为,应改为 min-height: unset 或删掉display: flex 且未设 align-items: stretch,其内部子项可能不等高 —— 这属于嵌套问题,与外层 Grid 无关有时所有列实际高度一致,但文字换行、图片尺寸、padding 差异让视觉上显得参差。这时不是 Grid 失效,而是内容渲染差异。
padding、margin 和 box-sizing(推荐 box-sizing: border-box)overflow: hidden + text-overflow: ellipsis(配合 white-space: nowrap 或多行省略方案)可控制高度一致性height: 100% + object-fit: cover,避免撑开容器如果业务上只需各列至少和最高列一样高(比如卡片底部按钮对齐),但允许内容更多时继续撑高,那 align-items: stretch 本身已满足;若想严格锁定所有列高度为最高项的高度(禁止撑高),Grid 本身不直接支持,需借助 JS 或改用 grid-template-rows: 1fr 配合固定行数 —— 但会牺牲内容自适应性,通常不推荐。
align-items: stretch + 正确的子项样式 = 自动等高height: 100% 强制子项填满 —— 它依赖父容器有明确高度,而 Grid 的 stretch 不依赖此outline: 1px solid red,直观观察是否真不等高