我需要一个textarea,我在框中键入我的文本,它根据需要增长,以避免处理滚动条,它需要在删除文本后收缩!我不想沿着mootools或jquery路线走,因为我有一个轻量级的形式.
您可以通过设置为1px
然后阅读scrollHeight
属性来检查内容的高度:
function textAreaAdjust(o) {
o.style.height = "1px";
o.style.height = (25+o.scrollHeight)+"px";
}
您也可以尝试contenteditable
将属性转换为普通p
或div
.不是真的,textarea
但它会在没有脚本的情况下自动调整大小.
Hello World
已经实现了一个jquery解决方案,源代码可以在github上找到:https://github.com/jackmoore/autosize.
使用此功能:
function adjustHeight(el){ el.style.height = (el.scrollHeight > el.clientHeight) ? (el.scrollHeight)+"px" : "60px"; }
使用这个html:
最后使用这个css:
textarea { min-height: 60px; overflow-y: auto; word-wrap:break-word }
解决方案只是让滚动条显示检测到需要调整高度,并且只要滚动条出现在文本区域中,它就会调整高度,以便再次隐藏滚动条.
无论出于何种原因,Alciende的回答在Safari中对我来说并不是很有效,但经过一些小修改之后做了一遍:
function textAreaAdjust(o) { o.style.height = "1px"; setTimeout(function() { o.style.height = (o.scrollHeight)+"px"; }, 1); }
希望这有助于某人