el-select下拉选择框列表展示图片

该文章演示了如何在Vue.js应用中利用ElementUI的el-select组件,结合flex布局展示下拉选项中的图片。代码示例展示了如何在每个选项中嵌入图片和文本,提供了一种自定义下拉列表样式的实现方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

el-select下拉选择框下拉列表展示图片

图片位置如下所示
在这里插入图片描述

前端代码如下所示

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <!-- vue在线引入 -->
    <script src="https://cdn.jsdelivr.net/npm/vue@2.7.14/dist/vue.js"></script>
    <!-- 引入样式 -->
    <link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
    <!-- 引入组件库 -->
    <script src="https://unpkg.com/element-ui/lib/index.js"></script>
    <!-- 在线引入echarts -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/5.4.1/echarts.min.js"></script>
    <!-- axios -->
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>

<body>
    <div id="app">
        <el-select v-model="value" placeholder="请选择">
            <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
                <template>
                    <!-- <div style="display: flex; justify-content: start; align-items: center;">
                        <img :src="item.imgurl" alt="" width="30px" height="30px">
                        <span>{{item.label}}</span>
                    </div> -->
                    <!-- elementui 的flex布局 -->
                    <el-row type="flex"  :gutter="20" justify="center">
                        <el-col :span="4">
                            <img :src="item.imgurl" alt="" width="30px" height="30px">
                        </el-col>
                        <el-col :span="16">
                            <span>{{item.label}}</span>
                        </el-col>
                      </el-row>
                </template>
            </el-option>                        
        </el-select>

        <el-select v-model="value2" placeholder="请选择">
            <el-option v-for="item in options2" :key="item.value" :label="item.label" :value="item.value">
                <template>
                     <!-- elementui 的flex布局 -->
                    <el-row type="flex"  :gutter="20" justify="center">
                        <el-col :span="4">
                            <!-- 字体图标可以改变颜色 -->
                            <i :class="item.icons" v-if="item.color" style="color: green"></i>
                            <i :class="item.icons" v-else></i>
                        </el-col>
                        <el-col :span="16">
                            <span>{{item.label}}</span>
                        </el-col>
                      </el-row>
                </template>
            </el-option>                        
        </el-select>
    </div>
    <script>
        var app = new Vue({
            el: '#app',
            data: {
                options: [
                    {
                        value: '1.png',
                        imgurl: './img/1.png',
                        label: '这是第一张图片'
                    },
                    {
                        value: '2.jpg',
                        imgurl: './img/2.jpg',
                        label: '这是第二张图片'
                    },
                    {
                        value: '第三张图片',
                        imgurl: './img/3.jpg',
                        label: '图片三'
                    },
                    {
                        value: '4.jpg',
                        imgurl: './img/4.jpg',
                        label: '图片四'
                    },
                    {
                        value: '5.jpg',
                        imgurl: './img/5.jpg',
                        label: '图片五'
                    }
                ],
                value: '',
                value2: '',
                options2: [
                {
                        value: 'icon1',
                        icons: 'el-icon-platform-eleme',
                        label: 'icon1'
                    },
                    {
                        value: 'icon2',
                        icons: 'el-icon-s-tools',
                        label: 'el-icon-s-tools'
                    },
                    {
                        value: 'icon3',
                        icons: 'el-icon-warning',
                        label: '字体图标',
                        color: 'green'
                    },
                ]
            },
            methods: {

            },
            mounted() {

            }
        })
    </script>
</body>

</html>

结果如下所示

在这里插入图片描述
在这里插入图片描述

data中的数据可以结合代码看一看

在这里插入图片描述

### 解决 el-select 下拉选择框内容不可滚动的问题 当遇到 `el-select` 下拉选择框中的选项列表过长而无法正常滚动的情况时,可以通过调整 CSS 样式来解决问题。具体来说,确保 `.el-scrollbar__wrap` 的样式设置允许其内部的内容能够被正确地滚动。 对于 Element Plus 中的 `el-select` 组件,默认情况下会有一个最大高度以及溢出隐藏属性应用于下拉菜单容器内,这可能会阻止用户查看超出视窗范围的选择项。为了使这些项目可见并能上下移动浏览全部条目,应该确认如下几点: - 确认是否有自定义样式覆盖了默认的最大高度(`max-height`) 和 溢出 (`overflow-y: auto;`) 属性。 如果确实存在冲突,则需移除或修正那些妨碍滚动行为的CSS规则[^1]。 另外一种常见情况是因为浏览器兼容性问题或是特定版本框架本身的 bug 导致此现象发生,在这种情形之下建议升级到最新稳定版库文件,并查阅官方文档获取更多支持信息[^2]。 最后值得注意的是,有时页面布局设计也可能影响组件的表现形式,比如父级元素设置了固定的高度限制或者其他定位方式干扰到了子节点的行为模式。此时应当仔细审查整个 HTML 结构及其关联样式表,寻找潜在的影响因素[^3]。 ```css /* 调整滚动条 */ .el-select-dropdown { max-height: 274px; } .el-select-dropdown__wrap { margin-bottom: -5px; overflow-x: hidden; overflow-y: scroll !important; } ``` 上述代码片段展示了如何强制启用垂直方向上的自动滚动生成器,同时保持水平方向不变形。通过这种方式可以有效改善用户体验,使得即使面对大量数据也能轻松选取所需目标。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值