通过移动el-select的代码解决elementUI中无法修改下拉框的样式的问题

Admin 2023-04-10 群英技术资讯 990 次浏览

在实际应用中,我们有时候会遇到“通过移动el-select的代码解决elementUI中无法修改下拉框的样式的问题”这样的问题,我们该怎样来处理呢?下文给大家介绍了解决方法,希望这篇“通过移动el-select的代码解决elementUI中无法修改下拉框的样式的问题”文章能帮助大家解决问题。


目录
  • elementUI下拉框自定义颜色选择器
    • 组件的定义
    • 父组件使用步骤
  • elementUI中修改下拉框的背景颜色和字体颜色
    • 总结

      elementUI下拉框自定义颜色选择器

      组件的定义

      1.定义颜色选择器组件

      话不多说,直接上代码

      <template>
        <el-select ref="colorSelect" placeholder="" v-model="myColor" style="width: 100%" @change="handleChange">
          <el-option
            v-for="item in colorList"
            :key="item"
            label=" "
            :value="item"
            v-html="'<div style=background-color:'+ item+';width:' +'100%'+';height:'+'90%'+'></div>'">
          </el-option>
        </el-select>
      </template>
      
      <script>
        export default {
          name: "colorSelect",
          //允许一个自定义组件在使用 v-model 时定制 prop 和 event。默认情况下,一个组件上的 v-model 会把 value 用作 prop 且把 input 用作 event,但是一些输入类型比如单选框和复选框按钮可能想使用 value prop 来达到不同的目的。使用 model 选项可以回避这些情况产生的冲突。
          model: {
            prop: 'color',
            event: 'update'
          },
          props: {
            //颜色数组
            colorList: {
              type: Array,
              default: () => {
                return ["#FFC0CB", "#DB7093", "#FF1493", "#DC143C"];
              }
            },
            //父组件绑定的值
            color: {
              type: String,
              default: undefined
            }
          },
          data() {
            return {
              myColor: undefined
            }
          },
          methods: {
            //设置颜色选择框中颜色
            setSelectColor(color) {
              //通过操作dom节点改变样式
              this.$nextTick(() => {
                let dom = this.$refs.colorSelect;
                if (dom) {
                  dom = dom.$el.children[0];
                  let inputDom = dom.querySelectorAll(".el-input__inner");
                  let icon = dom.querySelectorAll(".el-input__icon");
                  inputDom[0].style["background-color"] = color;
                  icon[0].style["color"] = "black";
                }
              })
            },
            handleChange(val) {
              this.setSelectColor(val);
              //触发update事件更新父组件绑定值
              this.$emit('update', val);
            }
          },
          created() {
            if (this.color && this.color.length > 0) {
              this.myColor = this.color;
              this.setSelectColor(this.color)
            }
          },
          watch: {
            'color': function (val) {
              this.setSelectColor(val);
            }
          }
        }
      </script>
      
      <style scoped>
      
      </style>
      
      

      组件使用了model,不明白的可以查看官网https://cn.vuejs.org/v2/api/#model

      父组件使用步骤

      1.引入子组件

      具体进入路径要看你的子组件位置

      import colorSelect from "../../../elements/colorSelect";

      2.声明组件

      在components中声明组件

      	components: {
            colorSelect
          }
      

      3.子组件使用

      在data中定义自己的颜色数组与绑定属性

      data(){
      	//颜色初始数据
      	colorList: ["#FFC0CB", "#DB7093", "#FF1493", "#DC143C",
      		"#DDA0DD", "#DA70D6", "#FF00FF", "#9370DB",
      		"#800080", "#6495ED", "#4169E1", "#0000FF",
      		"#87CEEB", "#E1FFFF", "#00FFFF", "#7FFFAA",
      		"#00FF7F", "#008000", "#FFFFE0", "#FFFF00",
      		"#FFD700", "#F5DEB3", "#FFA500", "#CD5C5C"],
      	//可设置默认值
      	color:'#FFC0CB'
      }
      

      使用

      <color-select :color-list="colorList" v-model="color"></color-select>
      

      完(最后贴图一张)

      elementUI中修改下拉框的背景颜色和字体颜色

      在项目开发过程中,需要用到下拉框,于是想到使用elementUI中的下拉框

      就是需要修改一下字体颜色和背景颜色

      /deep/.el-input__inner {
        background-color: rgba(108,113,127,30%);
        border: 1px solid rgba(13, 43, 81, 0.1);
        color: rgba(116, 116, 116, 1);
        padding: 0 0px 0 5px;
        font-size: 12px;
        border-radius: 0px;
      }

      至此都是顺利的,但是在修改背景图片的时候,在浏览器上修改可以生效的样式,写到代码里就不生效了,于是开始百度之旅

      /deep/.el-select-dropdown{
        background-color: rgb(51 55 64)!important;
        /* background-color: #f0f; */
        color: rgba(116, 116, 116, 1)!important;
        border: none;
      }

      官方的解释:

      Popper-append-to-body属性是Element-UI官方文档中提供的一个属性,该属性的用途就是将el-select选项的内容移动div#app当中,默认值是true

      :popper-append-to-body="false"

      自此,问题解决!


      到此,关于“通过移动el-select的代码解决elementUI中无法修改下拉框的样式的问题”的学习就结束了,希望能够解决大家的疑惑,另外大家动手实践也很重要,对大家加深理解和学习很有帮助。如果想要学习更多的相关知识,欢迎关注群英网络,小编每天都会给大家分享实用的文章!

      群英智防CDN,智能加速解决方案

      免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

      猜你喜欢

      成为群英会员,开启智能安全云计算之旅

      立即注册
      专业资深工程师驻守
      7X24小时快速响应
      一站式无忧技术支持
      免费备案服务
      免费拨打  400-678-4567
      免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
      在线客服
      微信公众号
      返回顶部
      返回顶部 返回顶部
      在线客服
      在线客服