📅  最后修改于: 2023-12-03 15:05:34.963000             🧑  作者: Mango
当我们需要让用户输入大段文字时,使用 textarea
元素是一种常见的选择。但是,在输入很多内容时,用户需要不断地滚动才能看到所有内容。为了让用户更加方便地输入和查看内容,我们可以使用自扩展高度的 textarea
。
自扩展高度的 textarea
会根据用户输入的内容自动扩展高度,从而可以完整地显示所有输入的内容。这种功能可以通过 CSS 来实现:
textarea {
resize: none;
overflow: hidden;
min-height: 60px;
}
其中,resize
属性用来禁止用户调整 textarea
大小;overflow
属性用来隐藏溢出的内容;min-height
属性指定了 textarea
的最小高度。
再配合一段 JavaScript 代码,就可以使得 textarea
自动扩展了:
const textarea = document.querySelector('textarea');
textarea.addEventListener('input', function () {
this.style.height = 'auto';
this.style.height = this.scrollHeight + 'px';
});
其中,addEventListener
方法用来监听用户输入事件;this.style.height
表示设置当前 textarea
的高度;scrollHeight
属性表示 textarea
的内容高度,包括不可见的部分。
以下是一个完整的示例代码片段:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Textarea 自扩展高度</title>
<style>
textarea {
resize: none;
overflow: hidden;
min-height: 60px;
}
</style>
<script>
window.addEventListener('load', function () {
const textarea = document.querySelector('textarea');
textarea.addEventListener('input', function () {
this.style.height = 'auto';
this.style.height = this.scrollHeight + 'px';
});
});
</script>
</head>
<body>
<textarea></textarea>
</body>
</html>
可以看到,当用户输入很多内容时,textarea
会自动扩展,以适应内容的长度。
在某些浏览器或版本中,自扩展高度的 textarea
可能会出现闪烁的问题。这是因为 scrollHeight
属性的计算不准确,导致高度不停地在变化。如果遇到这种情况,可以尝试将 CSS 样式中的 overflow: hidden;
删除,或者采用其他的自适应高度方案。
当 textarea
高度超出屏幕时,可能会出现滚动条。这种情况下,用户还是需要手动滚动才能看到所有内容。如果希望自扩展的 textarea
可以完全显示在屏幕内,可以采用其他的滚动方案,如使用 overflow-y: scroll;
或者自定义滚动条等。
以上就是关于 Textarea 自扩展高度的介绍和演示。希望对大家有所帮助!