我可以将textarea与文本一起增长到最大高度吗?

Dar*_*olf 25 html css textarea

我正在开发一个项目,我可以在各种大小的div中使用数据.当用户点击其中一个div时,需要变成可编辑的textarea.宽度是常量,但我希望高度从原始div的高度开始,然后在添加滚动条之前增长到最大高度.那可能吗?

小智 60

您可以直接使用contenteditable并让用户输入div,这是一个演示:http://jsfiddle.net/gD5jy/

HTML

<div contenteditable>
    type here...
</div>
Run Code Online (Sandbox Code Playgroud)

CSS

div[contenteditable]{
    border: 1px solid black;
    max-height: 200px;
    overflow: auto;
}
Run Code Online (Sandbox Code Playgroud)

  • 请注意,contenteditable会在不同的浏览器上呈现完全不同的HTML,尤其是在换行符时. (7认同)
  • @ DanielAllenLangdon的权利.我用'pre`替换了'div`并在Chrome中获得了我想要的换行和包装.当我看到他的评论时,我检查了Firefox,最后不得不在我的CSS中添加`white-space:pre-wrap`.我没有尝试其他浏览器. (2认同)

Ale*_*uhl 6

这是JavaScript函数

// TextArea is the Id from your textarea element
// MaxHeight is the maximum height value
function textarea_height(TextArea, MaxHeight) {
    textarea = document.getElementById(TextArea);
    textareaRows = textarea.value.split("\n");
    if(textareaRows[0] != "undefined" && textareaRows.length < MaxHeight) counter = textareaRows.length;
    else if(textareaRows.length >= MaxHeight) counter = MaxHeight;
    else counter = 1;
    textarea.rows = counter; }
Run Code Online (Sandbox Code Playgroud)

这是css风格

.textarea {
height: auto;
resize: none; }
Run Code Online (Sandbox Code Playgroud)

这是HTML代码

<textarea id="the_textarea" onchange="javascript:textarea_height(the_textarea, 15);" width="100%" height="auto" class="textarea"></textarea>
Run Code Online (Sandbox Code Playgroud)

这对我来说可以

  • 如果`textarea`不包含换行符,只是换行怎么办? (3认同)

oli*_*rge 6

有一个关于这个主题的优秀A List Apart文章:扩展优雅的文本区域

  • 谢谢你的链接!好文章.我认为你至少应该用几句话来解释作者是如何做到的 - 在点击链接之前给读者一些背景信息.否则根据Stack Overflow礼仪,你的帖子会更好.另外,为了省时间调试,我需要将`container.className + ="active";`更改为`container.className + ="active";`以使作者的代码正常工作. (4认同)