关于element-plus中el-select自定义标签及样式的问题

关于element-plus中el-select自定义标签及样式的问题

码农世界 2024-06-18 后端 95 次浏览 0个评论

关于element-plus中el-select自定义标签及样式的问题

我这天天的都遇到各种坑,关于自定义,我直接复制粘贴代码都实现不了,研究了一下午,骂骂咧咧了一下午,服气了。官网代码实现不了,就只能 “ 曲线救国 ” 了,哈哈哈

1. 先看最终实现的效果

五种程度,每种颜色都不同,回显也需要分不同颜色

关于element-plus中el-select自定义标签及样式的问题

2. 再看看官网是怎么写的
  • label + value 形式

    关于element-plus中el-select自定义标签及样式的问题

    	
        // 核心代码: #label="{ label, value }" 插槽
          
          
        
    
    • 多选 + options自定义 + 回显自定义

      关于element-plus中el-select自定义标签及样式的问题

      // 这串代码options自定义是没问题的,但是回显根本不理我啊,我很难受!
      
          
            
      {{ item.label }}
      // 不好使啊,至少在我的项目中是的

      这两种一结合,我觉得我瞬间行了(男人不能说不行)

      现实给了我一耳光,并赋予我骂骂咧咧一下午的资格,草(一种植物)

      3. 解决问题
      • 解决options下拉框数据颜色问题
      • 通过prefix前置插槽,将label数据作为前置,添加到输入框中回显
      • 将输入框原本回显的lebal数据隐藏,嘿嘿
        
        
           
               
              
              
                 {{ el.label }}
              
           
        
        
        // js
        // options数据
        let urgencyLevels = [
            { color: '#852527', label: '危急', value: 'critical' },
            { color: '#ff2430', label: '紧急且重要', value: 'urgentAndImportant' },
            { color: '#ff9100', label: '重要', value: 'important' },
            { color: '#D3E713', label: '需关注', value: 'attentionRequired' },
            { color: '#40ab99', label: '不重要', value: 'notImportant' }
        ]
        // 获取颜色的方法,通过v-model的值来选择当前的回显和颜色
        // 我就直接手写了,当然也可以选择用find方法,直接返回的就是一个对象
        const itemStyleColor = (val) => {
            switch (val) {
                case 'critical':
                    return { color: '#852527', label: '危急' }
                case 'urgentAndImportant':
                    return { color: '#ff2430', label: '紧急且重要' }
                case 'important':
                    return { color: '#ff9100', label: '重要' }
                case 'attentionRequired':
                    return { color: '#D3E713', label: '需关注' }
                case 'notImportant':
                    return { color: '#40ab99', label: '不重要' }
            }
        }
        

        代码到目前为止,效果是这样的,所以嘞,我们就隐藏一个没有动态变色的value

        关于element-plus中el-select自定义标签及样式的问题

        // css
        // 将回显的input框内的数据变成和背景色一样的颜色
        // 我使用了深度选择器,是用/deep/还是:deep,根据项目来定
        :deep(.select-one) {
                .el-input__inner {
                    color: #fff;
                }
            }
        
        4. 最后

        具体为啥我的项目中就实现不了官网的效果,原因我还在查找,找到了之后会写在评论区,如果有小伙伴知道,也欢迎评论;如有不足之处,请指正!

转载请注明来自码农世界,本文标题:《关于element-plus中el-select自定义标签及样式的问题》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,95人围观)参与讨论

还没有评论,来说两句吧...

Top