赞
踩
element-ui或者element-plus没有api来支持自定义多选option的样式,今天他来了,话不多说,直接上图。
选择option,回显对应的标题和颜色
- created(){
- this.tagStyleElem =
- window.document.head.appendChild(document.createElement('style'))
- }
注:tagStyleElem 为自定义变量
在select上绑定class样式和change事件
- <el-select
- v-model="value"
- multiple
- filterable
- class="tagStyle"
- placeholder="请选择标签"
- @change="change"
- >
- <el-option
- v-for="item in tagsList"
- :key="item.code"
- :label="item.name"
- :value="item.id"
- >
- {{ item.name }}
- </el-option>
- </el-select>
change事件里处理样式
// 选中替换option的样式 change() { //this.value 绑定的所选中的值 this.tagStyleElem.innerHTML = this.value .map( (value, index) => `.tagStyle .el-tag:nth-child(${index + 1}) { color: rgb(${this.tagsList.find((item) => value == item.id)?.colour}); border-color: rgb(${this.tagsList.find((item) => value == item.id)?.colour}); background-color: rgba(${this.tagsList.find((item) => value == item.id)?.colour},0.1); }` ) .join('') },注:tagsList为option数据,找到其对应的id,更改其中的样式
总结:主体的思想就是拿到对应数据,更改每个子项的el-tag 的样式即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。