提问者:小点点

如何使文本区域完全适合动态内容而不溢出?


这是一个棱角分明的app(但任何有css知识的人都可以帮忙),这里有一个动态内容的文本区域。

因此,当内容item.text更改时,文本区域应该根据内容增长或缩小,以完全适应内容而不溢出。

<textarea [value]="item.text" [placeholder]="item.text ? '' : 'Your Text Here...'" class="font-xl font-bold"></textarea>

// dont worry about the placeholder. you can ignore that.

当前,在我的情况下,滚动条出现&; 它不是随着动态内容而缩小或增长的。

我怎么才能做到呢?

或者,如果有一种方法可以将常规的html

转换为文本区域,您也可以建议这样做。 但更倾向于上述问题的解决方案。

我试过css规则,比如,max-content fit-content等。。。 什么都没解决!


共3个答案

匿名用户

没有JavaScript,您无法更改文本区域的高度。 但您可以使用可编辑的div代替。 在普通HTML中,类似的东西将起到与文本区域相同的作用,并且将根据内容自动调整大小。

<div class="font-xl font-bold" contentEditable>Hello World</div>

匿名用户

如果您使用可以编辑的

,则它可以相应地增长或缩小。

null

<div contenteditable="true">This is a div. It is editable. Try to change this text.</p>

匿名用户

这不能仅用css来完成,它需要JavaScript,而JavaScript有相当多的角落案例,可能会有问题。

我建议使用lib。 我已经多次使用angular material,但没有任何问题,只需将材料添加到您的项目中,并将MatInputModule导入到您想要使用它的模块,然后:

<textarea matInput cdkTextareaAutoSize cdkAutosizeMinRows="5" [value]="item.text" [placeholder]="item.text ? '' : 'Your Text Here...'" class="font-xl font-bold"></textarea>

文档:https://material.angular.io/components/input/overview#auto-resizing-textarea-elements

https://material.angular.io/cdk/text-field/overview