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

为何我的div无法占满#area尺寸?div嵌入#area失败求助

嘿,我来帮你拆解这两个前端问题!

问题1:为什么子div无法占满#area的100%尺寸?

你的#area用了display: flex布局,还给子div加了flex: 1,按道理子div应该自动撑满容器的宽高,但可能是这两个细节让你产生了误解:

  • 第一个子div里的<textarea>设置了固定的rows="19"和cols="10",它的固定尺寸会让你误以为外层div没占满,但实际上flex子div已经通过默认的align-items: stretch属性撑满了#area的400px高度。你可以给子div加个虚线边框验证:#area > div { border:1px dashed gray; },就能看到它确实已经占满了容器高度。
  • 如果是宽度没达到预期,那可能是你没注意到flex:1已经让子div平分了容器宽度——两个子div各占200px左右(减去可能的间距),如果你想单个子div占满整个#area,那应该去掉另一个子div,或者把目标div的flex:1改成flex:0 0 100%。

问题2:嵌入div到#area中失败

看你的HTML代码截断在了<d...,应该是你想添加<div id="right"></div>但没写完标签对吧?嵌入失败大概率是代码书写不完整导致的:
你需要把第二个div的标签补全,确保它是#area的直接子元素,比如:

<form action="http://www.google.lt" method="get">
  <div id="area">
    <div>
      <label for="exde">This is your text</label><br>
      <textarea name="tekstarea" rows="19" cols="10" id="exde"></textarea>
    </div>
    <div id="right"></div> <!-- 补全闭合标签 -->
  </div>
</form>

这样两个子div就能被#area的flex布局正确识别,各自平分容器空间。

优化后的完整代码(效果拉满版)

我调整了代码,确保所有元素都完美占满#area,同时让textarea也撑满父div:

#area { 
  width: 400px; 
  height: 400px; 
  display: flex; 
  border: 1px solid red; 
  gap: 10px; /* 可选:给两个子div加一点间距 */
}
#area > div { 
  flex: 1; 
  /* 让子div内部的元素也能垂直撑满 */
  display: flex;
  flex-direction: column;
}
#exde { 
  background-color: chocolate; 
  flex: 1; /* 让textarea占满父div的剩余高度 */
  border: none;
  resize: none; /* 可选:禁止textarea拉伸 */
}
#right { 
  background-color: aqua; 
}
<form action="http://www.google.lt" method="get">
  <div id="area">
    <div>
      <label for="exde">This is your text</label><br>
      <textarea name="tekstarea" id="exde"></textarea>
    </div>
    <div id="right"></div>
  </div>
</form>

这样修改后,不仅子div完全占满#area,textarea也会自动撑满父div的高度,不会出现顶部留白的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:46:55