我正在尝试让内容可编辑的文本框(div
元素)根据需要增长以适应输入的文本,最多可达父div的宽度的80%。
有没有办法用CSS做到这一点?如果没有,我对Javascript解决方案持开放态度,但我使用的是React,这使得这方面的事情变得复杂
这不是我所知道的任何其他问题的重复,因为它需要一个解决方案:
max-width
答案 0 :(得分:0)
可能你可以在父div中有一个div,它是父div的80%。然后为文本框设置width:auto。 可能听起来有点棘手。
答案 1 :(得分:0)
嗯......试试这个:
display: inline-block;
我不确定。如果有效,请告诉我。
答案 2 :(得分:0)
我试图让文本框根据需要增长以适合键入的文本 进入它,高达父div的宽度的80%。
我非常确定单凭CSS无法实现这一点,因为CSS无法确定textarea
文本内容的长度。
使用javascript,在每个按键上,您可以检查文本内容的长度以及是否:
textarea
的宽度仍然比允许的最大宽度然后textarea
可以逐步扩展。
工作示例:
var myTextArea = document.getElementsByTagName('textarea')[0];
var myTextLength = myTextArea.value.length
var myTextWidth = parseInt(window.getComputedStyle(myTextArea).width);
var myTextMinLength = 20;
var myTextMaxWidth = ((parseInt(window.getComputedStyle(document.body).width) / 100) * 80);
function checkTextLength() {
myTextLength = myTextArea.value.length;
if ((myTextLength > myTextMinLength) && (myTextWidth < (myTextMaxWidth))) {
myTextWidth += 8;
}
myTextArea.style.width = myTextWidth + 'px';
}
myTextArea.addEventListener('keypress', checkTextLength, false);
&#13;
textarea {
width: 180px;
height: 40px;
}
&#13;
<form>
<textarea placeholder="Start typing..."></textarea>
</form>
&#13;