背景
使用 Element Plus 组件库的 Input 输入框时,如果同时设置 type="textarea 和 clearable,clearable 不会起作用
首先我想到的方法是 #suffix 插槽解决,但是这个插槽也是针对 input 的,textarea 也不会生效
实现方案
使用组件库自带的 Icon 组件,使用定位的方式,将图标放在文本域中。同时实现清空方法。调整样式实现原生效果
代码参考:
vue
<template>
<el-form-item label="投票内容" prop="content" class="textarea-wrap">
<el-input
v-model="form.content"
type="textarea"
maxlength="1000"
placeholder="请输入详细投票内容"
show-word-limit
word-limit-position="outside"
/>
<el-icon v-if="form.content" class="textarea-clear" @click="clearContent">
<CircleClose/>
</el-icon>
</el-form-item>
</template>
<script setup lang="ts">
const clearContent = () => {
form.content = ''
}
</script>
<style lang="scss" scoped>
.textarea-wrap {
position: relative;
.textarea-clear {
position: absolute;
right: 10px;
top: 10px;
color: #91949a;
opacity: 0;
cursor: pointer;
}
&:hover .textarea-clear {
opacity: 1;
}
&:focus-within .textarea-clear {
opacity: 1;
}
}
</style>效果如图:
