VUE3监听textarea元素的输入事件(如用户键入文字),当内容变化时,动态调整文本区域的高度以便适应新内容的高度。
时间: 2024-10-22 09:05:18 浏览: 35
在 Vue3 中,你可以使用 `v-model` 绑定 textarea 元素的内容,然后配合 `@input` 事件监听输入的变化。当内容发生变化时,你需要手动计算新的高度并更新 DOM。以下是一个简单的示例:
```html
<template>
<div class="textarea-container">
<textarea v-model="content" @input="updateHeight"></textarea>
<p>当前内容: {{ content }}</p>
</div>
</template>
<script>
export default {
data() {
return {
content: '',
};
},
methods: {
updateHeight(e) {
// 获取 textarea 的节点
const textarea = document.querySelector('textarea');
// 计算新高度
let newHeight = e.target.scrollHeight; // 新内容高度
// 可能还需要添加滚动条高度或其他条件判断
// 更新样式
textarea.style.height = `${newHeight}px`;
},
},
};
</script>
<style scoped>
.textarea-container {
position: relative;
}
</style>
```
注意,这个例子假设了父级容器设置了相对定位(`position: relative`),以便于子元素高度的计算。实际应用中,你可能需要根据具体的 CSS 结构进行调整。此外,为了性能考虑,你应该避免在每次输入都进行DOM操作,如果频繁更新,可以考虑缓存高度并在合适的时候批量更新。
阅读全文