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

如何让内容适配CSS Grid列宽?实现同行输入框适配网格布局

实现输入框同行适配的CSS Grid布局

需求:使用CSS Grid布局,实现三个表单模块横向排列,每个模块的label位于输入框上方,所有输入框(包括第二个模块的两个输入框)处于同一水平行,且宽度适配所在网格列。

现有代码

CSS

.grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
  grid-gap: 4px;
}

HTML

<div class="grid">
  <div class="one">
    <label for="aaa">aaa</label>
    <input type="text" name="cheese" />
  </div>

  <div class="two">
    <label for="bbb">bbb</label>
    <input type="text" name="cheese" />
    <span>~</span>
    <input type="text" name="cheese" />
  </div>
  <div class="three">
    <label for="ccc">ccc</label>
    <input type="text" name="cheese" />
  </div>
</div>

修改后的代码

CSS

.grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr); /* 3个等宽网格列 */
  grid-gap: 16px;
}

.grid > div {
  display: flex;
  flex-direction: column;
  gap: 6px; /* label与输入区的间距 */
}

/* 处理双输入框组 */
.input-pair {
  display: flex;
  align-items: center;
  gap: 6px;
}

.input-pair input {
  flex: 1; /* 输入框平分当前列宽度 */
}

/* 统一输入框样式 */
.grid input {
  box-sizing: border-box;
  width: 100%;
  padding: 5px;
  border: 1px solid #ddd;
}

HTML

<div class="grid">
  <div class="one">
    <label for="aaa">aaa</label>
    <input type="text" name="cheese" id="aaa" />
  </div>

  <div class="two">
    <label for="bbb">bbb</label>
    <div class="input-pair">
      <input type="text" name="cheese" id="bbb" />
      <span>~</span>
      <input type="text" name="cheese" />
    </div>
  </div>

  <div class="three">
    <label for="ccc">ccc</label>
    <input type="text" name="cheese" id="ccc" />
  </div>
</div>

关键说明

  • 用repeat(3, 1fr)定义网格列,确保三个模块均分容器宽度;
  • 每个网格子项采用垂直Flex布局,保证label在输入区上方;
  • 双输入框通过Flex容器实现同行排列,且输入框自动填充列内可用空间;
  • 统一输入盒模型,避免宽度溢出,确保所有输入框对齐一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 18:15:55