我感受到了你的痛苦!我们也有客户给我们的摘要对于分配的区域来说太长了;对于一些客户来说,显然他们甚至没有想到他们的文本可能太长了。:-)
在您的情况下,我所做的类似于stackoverflow 所做的:在输入区域下方显示一个框,显示他们的文本更新onkeyup。使用固定高度的框,当他们的文本太长时,他们会立即明白这一点。取而代之的是,您可以尝试以下方法:
<style>
#outer {
width:100px;
height:40px;
overflow-x:hidden;
overflow-y:auto; /* To make it obvious the text is too long. */
border:1px solid red;
}
#inner {
width:100px;
}
</style>
<div id="outer">
<div id="inner" style="font-size:16px">
Lorem ipsum dolor sit amet, dui orci interdum sagittis,
proin metus dui, justo in suspendisse dolor.
</div>
</div>
<button onclick="checkFontSize()">Check font size</button>
<script>
function checkFontSize() {
var o = document.getElementById('outer');
var i = document.getElementById('inner');
var fs = parseInt(i.style.fontSize);
while(i.offsetHeight > o.offsetHeight) {
fs--;
i.style.fontSize = fs + 'px';
}
}
</script>
它检查内部 div 的高度是否大于外部 div 的高度;它的工作原理是假设内部 div 没有填充(您可以根据需要进行调整)。它将内部 div 的字体大小减小 1px,直到内部 div 的高度不再大于外部 div 的高度。
您可以在显示客户端文本的页面上有这样的代码,在这种情况下,您可以将其包装在一个匿名函数中,该函数执行 ondomready。我相信您可以修改它以适合您的实施。