vue3 写一个文本框 文字字数不能超过20个 会自动换行且换行后高度自适应
时间: 2024-09-18 16:18:29 浏览: 48
在 Vue3 中,你可以使用 v-model 指令来绑定输入框的值,同时结合计算属性、v-bind:style 和自定义事件来实现文字字数限制和自动换行及高度自适应。这里是一个简单的例子:
```vue
<template>
<div ref="textAreaWrapper">
<input type="text" v-model="inputText" :maxlength="20" @input="checkLength" />
</div>
</template>
<script setup>
import { ref } from 'vue';
const inputText = ref('');
const textAreaWrapperRef = ref(null);
function checkLength() {
if (inputText.value.length > 20) {
// 如果超过20个字符,截断并设置新的行数
inputText.value = inputText.value.slice(0, 20);
// 更新高度,这里假设每次输入都会触发高度调整
adjustHeight();
}
}
// 自定义方法,模拟高度调整
function adjustHeight() {
const lines = inputText.value.split('\n').length;
textAreaWrapperRef.value.style.height = `${lines * 16}px`; // 假设每行高度为16像素,实际可以根据需要调整
}
</script>
<style scoped>
textarea {
white-space: pre-wrap; /* 或者使用 CSS3 的 word-break: break-all */
overflow-y: auto;
resize: none; /* 阻止用户缩放 */
}
</style>
```
这个例子中,我们设置了最大长度为20,当输入超过20个字符时,会截断多余部分,并通过调整`height`样式动态适应换行后的高度。
阅读全文