vue3+elementUI-plus实现select下拉框的虚拟滚动

网上查了几个方案,要不就是不兼容,要不就是不支持vue3,
最终找到一个合适的,并且已上线使用,需要修改一下样式:
代码如下:
main.js里引用

import 'vue3-virtual-scroller/dist/vue3-virtual-scroller.css';
import {
    RecycleScroller } from 'vue3-virtual-scroller';
app.component('RecycleScroller', RecycleScroller);

vue文件:

<el-form-item label="用户" prop="seriesId">
                    <div ref="selectWrapper" @click="toggleDropdown($event)" class="select-wrapper">
                        <el-input style="width: 240px"
                        placeholder="请输入搜索内容"
                        v-model="selectedOption"
                        :suffix-icon="selectedOption ? 'el-icon-circle-close' : null"
                        @clear="clearSearch"
                        ></el-input>
                    </div>
                    <el-icon class="clear-btn" v-if="selectedOption" @click.stop="clearSearch"><CircleClose /></el-icon>
                    <Teleport to="body">
                        <div v-show="isOpen"  ref="dropdown" class="virtual-dropdown" :style="dropdownStyles" @click="closeDropdown">
                            <</
Vue3中结合Element UI来实现带有图片的下拉框选择器,可以通过自定义选项组件的方式来完成。具体步骤如下: 1. 首先确保已经安装并引入了Element UI PlusElement UI的Vue3版本)。 2. 创建一个自定义的下拉选项组件,该组件接收一个对象数组作为数据源,每个对象中包含显示文本和图片的字段。 3. 在自定义组件内部,使用`<el-option>`标签,通过插槽(slot)自定义显示的内容,将图片和文本组合在一起。 4. 在父组件中使用自定义的下拉选项组件,并传入包含图片和文本数据的对象数组作为`options`属性。 这里是一个简化的示例代码: ```vue <!-- 自定义下拉选项组件 --> <template> <el-dropdown-menu> <el-dropdown-item v-for="option in options" :key="option.value"> <div class="custom-option"> <img :src="option.image" alt="图片" class="option-image" /> <span class="option-text">{{ option.text }}</span> </div> </el-dropdown-item> </el-dropdown-menu> </template> <script> export default { name: &#39;CustomOption&#39;, props: { options: { type: Array, required: true } } } </script> <style> .custom-option { display: flex; align-items: center; } .option-image { width: 30px; height: 30px; margin-right: 10px; } </style> ``` 在父组件中使用: ```vue <template> <el-dropdown> <template #trigger> <el-button>选择图片</el-button> </template> <custom-option :options="options"></custom-option> </el-dropdown> </template> <script> import CustomOption from &#39;./CustomOption.vue&#39;; export default { components: { CustomOption }, data() { return { options: [ { value: &#39;option1&#39;, text: &#39;选项1&#39;, image: &#39;path/to/image1.jpg&#39; }, { value: &#39;option2&#39;, text: &#39;选项2&#39;, image: &#39;path/to/image2.jpg&#39; }, // 更多选项... ] }; } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xingchen678

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值