【Vue2 + ElementUI】更改el-select的自带的下拉图标为倒三角,并设置相关文字颜色和大小

  1. 效果图

  2. 实现

bash 复制代码
<template>
      <div class="search_resources">
          <div class="search-content">
              <el-select class="search-select" v-model="query.channel" placeholder="请选择" @change="handleResource">
                  <el-option v-for="item in channelList" :key="item.id" :label="item.dictValue" :value="item.dictKey"></el-option>
              </el-select>
              <div class="search-input">
                  <div class="line"></div>
                  <el-input class="search-keyword" v-model="query.keyword" clearable placeholder="请输入您要搜索的信息"></el-input>
              </div>
              <div class="search-icon" @click="handleSearch">
                  <el-image :src="require('@/assets/home/search.svg')"></el-image>
              </div>
          </div>
      </div>
</template>

<script>
import { getDictionary } from "@/api/xxx";
export default{
	data(){
		return{
		 	channelList: [
		 		{ dictValue: "全部资源", dictKey: "" }
		 	],
		 	query:{
                keyword: "", // 搜索关键词
                channel: "", // 选择的资源
		 	}
		}
	},
	mounted(){
		this.fetchData()
	},
	methods:{
        /**
         * 获取所有资源
         */
        fetchData() {
            getDictionary("channel").then(res => {
                this.channelList = res.data;
            });
        },

		 /**
         * 选择资源
         */
        handleResource(val) {
            this.query.channel = val;
        },
        
        /**
         * 搜索
         */
        handleSearch() {
            if (this.query.channel == "") {
                this.query.channel = "0";
            }
            this.$router.push({
                path: "/industrySearch",
                query: this.query
            });
        },
	}
}
</script>

<style lang="less" scoped>
.search-content {
    width: 800px;
    height: 80px;
    display: flex;
    align-items: center;
    margin: 12px auto;
}

.search-select {
    width: 162px;
    height: 80px;
}

.search-input {
    display: flex;
    align-items: center;
    background-color: #fff;
}

.line {
    width: 1px;
    height: 60px;
    background: #E3E3E3;
    margin: 0 12px;
}

.search-keyword {
    width: 556px;
    height: 80px;
}

.search-icon {
    display: flex;
    width: 120px;
    height: 80px;
    padding: 16px 24px;
    justify-content: center;
    align-items: center;
    gap: 10px;
    border-radius: 0px 4px 4px 0px;
    background: linear-gradient(0deg, #EF5432 -12.5%, #F90 85.71%);
}

.el-select-dropdown__item {
    font-size: 18px;
    margin: 5px 0;
}
</style>

<style lang="less">

.search_resources {
    min-height: 400px;
    background-color: rgb(42, 132, 206);
    background-size: cover;
    margin-top: 10px;

    .search-keyword>input {
        width: 556px;
        height: 100% !important;
        border-radius: 0;
        border: 0;
        color: #333;
        font-family: "Source Han Sans CN";
        font-size: 18px;
        font-style: normal;
        font-weight: 350;
        line-height: 16px;
        /* 88.889% */
    }

    .search-select {
        .el-input {
            .el-input__inner {
                height: 80px;
                border: 0;
                border-radius: 0;
                color: #333;
                font-family: "Source Han Sans CN";
                font-size: 18px;
                font-style: normal;
                font-weight: 400;
                line-height: normal;
            }

            .el-input__suffix {
                .el-input__suffix-inner {
                    .el-input__icon {
                        display: flex;
                        align-items: center;
                    }

                    .el-input__icon::before {
                        // content: '\e78f';
                        content: '';
                        background-image: url("~@/assets/home/expand.svg");
                        background-size: cover;
                        width: 24px;
                        height: 24px;
                        display: inline-block;
                        transform: rotate(180deg);
                        padding-left: 10px;
                    }
                }
            }
        }
    }
}
</style>
  1. 总结

将el-select自带的下拉选择图标(如下图 1- 箭头),替换成自定义图标(如下图 2- 倒三角)


(1)利用控制台找到 图 1 所在的位置,如下该图标是通过伪类元素添加的。

(2) 替换为 图 2

① 只更改图标,不更改大小
在图标库(例 elementUI)找对应的图标,通过控制台找 content,最后设置即可

bash 复制代码
content: '\e78f';

② 既更改图标,又更改大小
将自定义图片引入项目,通过background-image设置。此处content:''且display: inline-block;

bash 复制代码
.el-input__icon::before {
	content: '';
    background-image: url("~@/assets/home/expand.svg");
    background-size: cover;
    width: 24px;
    height: 24px;
    display: inline-block;
    transform: rotate(180deg);
    padding-left: 10px;
}
相关推荐
索然无味io25 分钟前
XML外部实体注入--漏洞利用
xml·前端·笔记·学习·web安全·网络安全·php
ThomasChan12342 分钟前
Typescript 多个泛型参数详细解读
前端·javascript·vue.js·typescript·vue·reactjs·js
爱学习的狮王1 小时前
ubuntu18.04安装nvm管理本机node和npm
前端·npm·node.js·nvm
东锋1.31 小时前
使用 F12 查看 Network 及数据格式
前端
zhanggongzichu1 小时前
npm常用命令
前端·npm·node.js
anyup_前端梦工厂1 小时前
从浏览器层面看前端性能:了解 Chrome 组件、多进程与多线程
前端·chrome
zzlyx991 小时前
.NET 9 微软官方推荐使用 Scalar 替代传统的 Swagger
javascript·microsoft·.net
chengpei1471 小时前
chrome游览器JSON Formatter插件无效问题排查,FastJsonHttpMessageConverter导致Content-Type返回不正确
java·前端·chrome·spring boot·json
Bunury1 小时前
组件封装-List
javascript·数据结构·list
我命由我123451 小时前
NPM 与 Node.js 版本兼容问题:npm warn cli npm does not support Node.js
前端·javascript·前端框架·npm·node.js·html5·js