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

CSS Grid布局设置resize:horizontal后其余网格列未自适应调整问题

问题原因

出现该问题的核心原因有两点:

  • Grid的列轨道尺寸由grid-template-columns预先定义,你给第一列设置的minmax(100px, 200px)限制了轨道最大宽度只能到200px,拖拽left-box改变的是元素自身宽度,不会主动修改网格轨道的预设尺寸
  • 固定的轨道尺寸规则下,右侧1fr宽度是基于总宽度减去左侧轨道宽度计算的,左侧轨道不变,右侧自然不会同步调整

解决方案(纯CSS实现,无需JS)

只需要修改.main的grid-template-columns配置,同时把原有的宽度限制移到.left-box上即可:

html,
body,
.main {
  height: 100%;
  margin: 0;
}

.main {
  display: grid;
  /* 把第一列改为auto,让轨道宽度适配子元素的实际宽度 */
  grid-template-columns: auto 1fr;
  grid-template-rows: 50px 1fr;
  gap: 2px 2px;
  grid-auto-flow: row;
  grid-template-areas: "header-box header-box" "left-box main-box";
}

.header-box {
  background-color: lightblue;
  grid-area: header-box;
  overflow: hidden;
}

.left-box {
  background-color: lightgreen;
  grid-area: left-box;
  resize: horizontal;
  overflow: auto;
  /* 把原来的minmax限制挪到这里,控制拖拽的最小/最大宽度 */
  min-width: 100px;
  max-width: 200px; /* 如果不需要最大宽度限制可以直接删掉这行 */
}

.main-box {
  background-color: lightpink;
  grid-area: main-box;
  overflow: auto;
}

修改后拖拽左侧栏时,网格第一列轨道会跟随left-box的实际宽度自动调整,右侧main-box作为1fr列会自动填充剩余宽度,完全符合预期效果。

可选扩展

如果不需要限制左侧栏的最大宽度,直接删掉.left-box的max-width属性即可,拖拽时可以任意拉宽左侧栏,右侧会同步收缩。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.16 21:36:05