textarea默认不支持自动撑高,必须用JS动态设置style.height:先设height='auto'重置,再读scrollHeight赋值;需配合min/max-height、overflow-y: auto及padding/border等样式一致控制,iOS用requestAnimationFrame修复延迟,IE11需换行符归一化。
不会自动撑高,不是你写错了,是它本来就不支持——浏览器默认按
固定行数渲染,内容一多就出滚动条。想让它“随文字长高”,必须靠 JS 动态设
,且关键步骤不能跳。
为什么直接设
会越撑越高?
常见错误是只写
,没重置高度。一旦上次设过固定值,
就会包含旧高度的干扰,导致每次输入都多加几像素。
每次
触发前,先执行
再读
,此时才反映真实内容所需高度
最后赋值:
如果用
禁拖拽,记得在 CSS 里加,否则右下角手柄会破坏布局
移动端 iOS Safari 高度更新延迟怎么破?
iOS Safari 对
的计算有异步延迟,尤其粘贴大段文本后,高度常卡在旧值。这不是 bug,是渲染管线机制导致的。
用
包一层比
更稳,尤其在 120Hz 屏上
不要依赖
或
—— 它们不包含溢出区域,永远撑不开
若必须兼容 IE11,先做换行符归一化:
IE11 下
在空行末尾会偏小,可补 2px(仅限该环境)
和
怎么配?
光靠 JS 撑高不行,得用 CSS 扛住基础边界。否则空
会塌成一条线,或者用户狂输时无限制拉伸。
使用HTML,CSS,JavaScript开发Android应用程序 英文文字pdf版附源文件
如果你了解HTML,CSS和JavaScript,您已经拥有所需的工具开发Android应用程序。本动手本书展示了如何使用这些开源web标准设计和建造,可适应任何Android设备的应用程序 - 无需使用Java。您将学习如何创建一个在您选择的平台的Android友好的网络应用程序,然后转换与自由PhoneGap框架到一个原生的Android应用程序。了解为什么设备无关的移动应用是未来的潮流,并开始构建应用程序,提供更
下载
立即学习
“
前端免费学习笔记(深入)
”;
CSS 必须设
(如
),保证初始有可点击区域
控制上限(如
),超出后才出现滚动条
要显式写,否则超限时内容被裁切
别用
或
直接套在
上——它会和 JS 高度冲突
最易被忽略的是:所有样式(
、
、
)必须和 JS 计算时完全一致,否则
就不准。Chrome 开发者工具里关掉“user agent stylesheet”再看 computed 值,才能确认真实渲染高度。
textarearowsstyle.heightscrollHeighttextarea.style.height = textarea.scrollHeight + 'px'scrollHeightinputtextarea.style.height = 'auto'scrollHeighttextarea.style.height = textarea.scrollHeight + 'px'resize: nonescrollHeightrequestAnimationFramesetTimeout(..., 0)offsetHeightclientHeighttextarea.value = textarea.value.replace(/\r\n/g, '\n')scrollHeightmin-heightmax-heighttextareamin-height80pxmax-height300pxoverflow-y: autoheight: 100%flex: 1textareapaddingborderline-heightscrollHeight