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

如何让textarea元素占满浏览器窗口100%的宽度和高度?

哎这个问题我太熟了!你写的那段代码之所以会让textarea超出窗口出现滚动条,根本原因是浏览器默认的盒模型在搞事情,还有一些隐性的样式影响。咱们一步步来搞定它:

解决全屏textarea的正确姿势

1. 先统一盒模型

浏览器默认的box-sizing: content-box会让元素的宽高只计算内容区域,哪怕你设了border:0和padding:0,有时候还是会因为某些隐性样式(比如浏览器的默认outline)撑大元素。所以第一步给所有元素设置border-box盒模型,让宽高包含padding和border:

* {
  box-sizing: border-box;
}

2. 给html和body做全屏基础

要让textarea能撑满整个窗口,首先得让html和body本身占据全屏空间,同时清除它们的默认边距,还要防止body出现不必要的滚动条:

html, body {
  margin: 0;
  padding: 0;
  height: 100%;
  overflow: hidden; /* 彻底干掉body层面的滚动条 */
}

3. 配置textarea的全屏样式

最后给textarea设置宽高100%,清除所有默认的边框、边距,还可以按需去掉resize功能(避免用户拖动后超出窗口):

textarea {
  width: 100%;
  height: 100%;
  margin: 0;
  padding: 8px; /* 如果你需要内边距的话,border-box会把它算在宽高里,不会超出 */
  border: none;
  resize: none; /* 禁止用户调整大小,不需要的话可以删掉 */
  outline: none; /* 去掉聚焦时的默认外框,可选 */
}

完整可运行代码

<!DOCTYPE html>
<html>
<head>
  <style>
    * {
      box-sizing: border-box;
    }
    html, body {
      margin: 0;
      padding: 0;
      height: 100%;
      overflow: hidden;
    }
    textarea {
      width: 100%;
      height: 100%;
      margin: 0;
      padding: 8px;
      border: none;
      resize: none;
      outline: none;
      font-size: 16px;
    }
  </style>
</head>
<body>
  <textarea>Text goes here</textarea>
</body>
</html>

小补充

  • 如果想保留用户调整textarea大小的功能,删掉resize: none就行,但要注意用户拖动后可能会超出窗口范围。
  • 有些浏览器会默认给textarea显示垂直滚动条,哪怕内容没超出,你可以把textarea的overflow设为auto,这样只有内容过多时才会出现滚动条。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:50:36