You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

display: grid父容器下子div为何占满100%高度?如何让子高度随内容适配?

问题根因

你当前子元素自动占满父容器高度的核心原因是父grid容器的grid-template-rows: 1fr配置,fr单位会按比例分配父容器的可用空间,所以该行高度直接撑满了父容器的100%高度,而grid子元素默认的对齐规则是拉伸占满所在网格区域的高度,最终就出现了你看到的效果。


两种解决方案

方案1:修改父容器行模板配置(适合可以调整父grid规则的场景)

把.parent里的grid-template-rows: 1fr替换为min-content或者auto,两种配置在单一行的场景下效果一致,都会让网格行的高度由行内内容的实际高度决定,不会主动撑满父容器。
修改后的CSS代码:

.parent {
  height: 100%;
  width: 100%;
  display: grid;
  grid-template-columns: 1fr 1fr;
  /* 把1fr替换为min-content */
  grid-template-rows: min-content;
  gap: 0;
}

方案2:修改子元素对齐规则(适合不能调整父grid规则的场景)

如果父容器的行模板配置不能修改,只需要给.child添加align-self: start,让子元素在网格行内顶部对齐,不再默认拉伸占满行高,高度自然就由自身内容决定。
修改后的CSS代码:

.child {
  width: 100%;
  display: flex;
  background: red;
  /* 新增这一行即可 */
  align-self: start;
}

方案差异说明

  • 方案1会让整个网格行的高度收缩到内容高度,父容器剩余的高度会留空
  • 方案2的网格行高度仍然会占满父容器100%,只是子元素自身高度收缩,你可以根据实际业务需求选择对应方案

内容的提问来源于stack exchange,提问作者user3775998

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:45:04