我在textarea下面使用的唯一css是它的width,不需要设置初始height。 overflow 也不需要,因为将使用的 scrollHeight 是:
元素内容高度的度量,包括内容
由于溢出,在屏幕上不可见。
scrollHeight:MDN
如果您想使用 Internet Explorer,则必须使用 overflow: auto,否则 IE 坚持要添加垂直滚动条(即使没有可滚动的内容)。
请注意,width 也不需要指定,但它是与此主题相关的最常用设置的属性。
这是所需的 JavaScript:
document.addEventListener("DOMContentLoaded", function(event) {
var ta = document.getElementById('ta');
ta.style.height = ta.scrollHeight + 'px';
});
当 DOM 加载完毕后,textarea 的height 被设置为它的scrollHeight。
这是一个完整的测试页面:
<!DOCTYPE html>
<html>
<head>
<title>Some Title</title>
<style>
textarea {
width: 300px;
overflow: auto;
}
</style>
</head>
<body>
<textarea id="ta">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</textarea>
<script>
document.addEventListener("DOMContentLoaded", function(event) {
var ta = document.getElementById('ta');
ta.style.height = ta.scrollHeight + 'px';
});
</script>
</body>
</html>
如果需要,代码可以应用于页面上的所有文本区域:
document.addEventListener("DOMContentLoaded", function(event) {
var tas = document.getElementsByTagName('textarea');
for (var i=0; i < tas.length; i++) {
tas[i].style.height = tas[i].scrollHeight + 'px';
}
});