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

Materialize CSS如何阻止textarea内容溢出导致页面高度增加

问题根因

Materialize 1.x 版本默认给.materialize-textarea类绑定了输入时自动调整高度的JS逻辑,即使你设置了行内固定高度,该逻辑仍会动态修改文本域的min-height属性,导致文本域实际高度超出设定值,最终撑高整个页面生成多余空白区域。

解决方案

你可以通过以下两步修改实现需求,全程适配Electron环境无需兼容其他浏览器:

1. 新增CSS样式兜底

在<head>中加入如下样式,强制锁定文本域高度:

.fixed-textarea {
  height: 20rem !important;
  min-height: 20rem !important;
  max-height: 20rem !important;
  overflow-y: scroll !important;
}

2. 解绑Materialize自带的自动高度调整逻辑

在引入materialize.min.js的下方加入如下JS代码,禁用文本域的自动拉伸功能:

document.addEventListener('DOMContentLoaded', () => {
  const targetTextareas = document.querySelectorAll('.materialize-textarea');
  targetTextareas.forEach(textarea => {
    // 移除自动调整高度的事件绑定
    textarea.removeEventListener('input', M.textareaAutoResize);
    // 初始化时强制重置高度为设定值
    textarea.style.height = '20rem';
    // 给文本域添加上面定义的固定高度类
    textarea.classList.add('fixed-textarea');
  });
});

可选结构修复

你提供的示例代码中<main>标签错误写在了<head>标签内部,建议将<main>整块移动到<body>标签内,避免HTML结构不规范导致的偶发布局异常。

效果验证

修改完成后可同时满足两个需求:

  • 文本域输入大量内容时,高度固定保持20rem,内容仅在文本域内部滚动,不会撑高页面产生底部空白
  • 浏览器窗口高度缩小时,主页面滚动条正常触发,依然可以滚动查看完整的textarea元素

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:06:05