我正在学习css.我有一个包含灵活文本区域的div.现在我希望文本区域和外部div在用户在文本区域中输入多行内容时自动扩展高度,当文本区域超过3行时,停止展开并滚动文本区域.我应该如何编写css?

呈现的代码:

.outerdiv {
  height: auto;
  display: flex;
}

.outerdiv textarea {
  height: 100%;
  flex-grow: 1;
}
<div class="outerdiv">
  <textarea></textarea>
</div>

推荐答案

我不认为有一个css解决方案.

然而,这个JS有点像你想要的那样:

function updateTextarea() {
   var textarea = document.getElementById("textarea");
    // Get line height of the textarea
   var lht = parseInt($('textarea').css('lineHeight'),10);
    // Get lines 
   var scrlht = textarea.scrollHeight;
   var lines = Math.floor(scrlht / lht);
   
   if (lines < 4) {
    textarea.style.height = '15px'
    textarea.style.height = (lines * lht) + 'px'
   }
 }
textarea {
line-height: 15px;
height: 15px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
  <textarea id='textarea' oninput="updateTextarea()"></textarea>
</div>

在删除文本时,它不会使文本区变小.但当你打字时,它确实会变大.

Html相关问答推荐

我需要两个HTML标签,以便当另一个隐藏时,一个可见,反之亦然

如何删除在小屏幕上单击按钮时出现的蓝色方块?

子元素以元素X开始和结束的元素的XPath?

<;img>;和具有负边距的元素的堆叠顺序

如何在div中淡入和淡出渐变背景?

需要关于HTML的建议

我应该怎么做才能显示出整个字符串?

CSS中的转换属性是如何工作的?

错误时交换表单,成功时使用HTMX重定向

HTML 重定向到当前服务器

如何截断一些文本并用双引号引起来?

表格中每 4 行条纹一次

在包含 html 标签的字符串的子字符串中应用不同的样式

如何制作一个空的网格模板行来填充剩余空间?

是否可以为长 huxtable 固定头部?

如何在单击按钮时切换 Blazor 中的类?

如何在没有 JS 的情况下创建带搜索的 Select 菜单

CSS Padding 将右对齐的对象推离页面

HTML 标记未在页面上展开

Bootstrap Grid System col 无法正常工作