从el-select如何做多个tag才省略,看如何改造第三方组件的满足需求的万用思路

如何处理.一些第三方组件库没有提供的效果

1.css控制视觉效果,虚拟达成

2.js 回归原始的dom操作

<template>
  <div>
    <el-select
      v-model="value1"
      multiple
      @change="handleChange"
      style="margin-left: 300px;"
      placeholder="请选择">
      <el-option
        v-for="item in options"
        :key="item.value"
        :label="item.label"
        :value="item.value">
      </el-option>
    </el-select>
  </div>
</template>

<script>
let span = document.createElement("span");
span.setAttribute("class","numCounter");
export default {
  name: "index",
  data() {
    return {
      options: [{
        value: '选项1',
        label: '黄金糕'
      }, {
        value: '选项2',
        label: '双皮奶'
      }, {
        value: '选项3',
        label: '蚵仔煎'
      }, {
        value: '选项4',
        label: '龙须面'
      }, {
        value: '选项5',
        label: '北京烤鸭'
      }],
      value1: [],
    }
  },
  mounted() {
    document.querySelector(".el-select").appendChild(span);
  },
  methods: {
    handleChange(val) {
      if(val.length > 2 ){
        span.setAttribute("style","display:inline-block");
        span.innerHTML = `+${val.length - 2}`
      }else {
        span.setAttribute("style","display:none");
      }
    }
  }
}
</script>

<style scoped>
.el-select{
  width: 500px;
}
.el-tag.el-tag--info:nth-child(n+3){
  display: none;
}
.el-tag .el-tag--info:nth-child(n+3){
  display: none;
}
::v-deep .numCounter {
  display: none;
  position: absolute;
  top: 0px;
  right: 36px;
  background-color: #f4f4f5;
  border-color: #e9e9eb;
  color: #909399;
  border-radius: 5px;
  padding: 0px 5px;
}
</style>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值