el-select多选修改默认显示一个

需求:超出选择框已数字展示

效果

备忘一下

代码

父组件

<template><div><div class="credit_box"><div class="credit_select_box"><div class="credit_select"><span>选择框1</span><div style="width:42%" class="gequan"><select-tags v-model="value1" style="margin-left:8px" :options="options" class="select-tags"></select-tags></div><span style="margin-left:20px">选择框2</span><div style="width:42%" class="fund"><select-tags1 v-model="value2" style="margin-left:8px" :options="options2"class="select-tags1"></select-tags1></div></div><div></div></div></div></div>
</template><script>
import selectTags from './components/select.vue'   //一个会错乱
import selectTags1 from './components/select1.vue'
export default {components: {selectTags,selectTags1},data() {return {options: [{value: '选项1',label: '黄金糕黄金糕黄金糕'}, {value: '选项2',label: '双皮奶黄金糕黄金糕'}, {value: '选项3',label: '蚵仔煎黄金糕黄金糕北京烤鸭黄金糕黄金糕'}, {value: '选项4',label: '龙须面黄金糕黄金糕北京烤鸭黄金糕黄金糕'}, {value: '选项5',label: '北京烤鸭黄金糕黄金糕'}],options2: [{value: '选项1',label: '黄金糕黄金糕黄金糕'}, {value: '选项2',label: '双皮奶黄金糕黄金糕'}, {value: '选项3',label: '蚵仔煎黄金糕黄金糕北京烤鸭黄金糕黄金糕'}, {value: '选项4',label: '龙须面黄金糕黄金糕北京烤鸭黄金糕黄金糕'}, {value: '选项5',label: '北京烤鸭黄金糕黄金糕'}],value1: [],value2: [],}},methods: {}
}
</script><style lang="scss" scoped>
.credit_box {margin: 0 20px;background: #FFF;border: 1px solid #D4D8E5;stroke: #D4D8E5;filter: drop-shadow(0px 0px 8px rgba(224, 223, 238, 0.40));.credit_select_box {.credit_select {display: flex;align-items: center;margin-top: 100px;margin-left: 20px;margin-bottom: 100px;}}
}
</style>

子组件1

<template><el-select v-model="values" size="small" multiple style="width:100%" placeholder="请选择" @change="handleChange"><el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option></el-select>
</template><script>
var observer = null
export default {props: {options: {type: Array,default: () => []},value: {type: Array,default: () => []}},data() {return {};},mounted() {let tagLIstDom = document.querySelector(".gequan .el-select__tags");//   需要加上组件自定义的类名,防止监听失效let tagSpanDom = document.querySelector(".gequan .select-tags .el-select__tags > span");let hideDom = document.createElement("span");hideDom.classList = ["count-node"]; //设置样式tagSpanDom.append(hideDom); //插入到span中var config = { childList: true };// 当观察到突变时执行的回调函数var callback = function (mutationsList) {mutationsList.forEach(function (item, index) {if (item.type == "childList") {let tagList = item.target.childNodes;let tagWidth = 0; //标签总宽度let tagNum = 0; //标签多余个数let avaliableTagWidth = 0 //显示标签的总宽度for (let i = 0; i < tagList.length; i++) {const e = tagList[i];if (tagWidth > tagLIstDom.offsetWidth) {e.style.display = "none"; //隐藏多余标签} else {e.style.display = "inline-block"; //显示标签}tagWidth += e.offsetWidth + 5;if (tagWidth > tagLIstDom.offsetWidth) {e.style.display = "none"; //隐藏多余标签} else {e.style.display = "inline-block"; //显示标签}if (e.style.display != "none") {tagNum++;hideDom.style.display = "none"; //隐藏多余标签个数const margin = tagNum === 1 ? 0 : 7avaliableTagWidth += e.offsetWidth + margin} else {hideDom.style.display = "inline-block"; //显示多余标签个数// hideDom.style.left = `${avaliableTagWidth}px` //数字标签的位置设置hideDom.innerHTML = `+${tagList.length - tagNum}`;  //显示多余标签个数}}}});};// 创建一个链接到回调函数的观察者实例observer = new MutationObserver(callback);// 开始观察已配置突变的目标节点observer.observe(tagSpanDom, config);// 随后,您还可以停止观察// observer.disconnect();},methods: {handleChange() {this.$emit("change", this.value);}},computed: {values: {get() {return this.value;},set(val) {this.$emit("input", val);}}},//销毁时beforeDestroy() {// 停止观察observer.disconnect();}
};
</script>
<style>
.count-node {position: absolute;right: 0;/* top: 2px; */display: none;height: 24px;padding: 0 8px;line-height: 22px;margin-left: 61px;background-color: #f4f4f5;border: 1px solid #e9e9eb;border-radius: 4px;color: #909399;font-size: 12px;box-sizing: border-box;
}
</style>

子组件2

<template><el-select v-model="values" size="small" multiple style="width:100%" placeholder="请选择" @change="handleChange"><el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"></el-option></el-select>
</template><script>
var observer = null
export default {props: {options: {type: Array,default: () => []},value: {type: Array,default: () => []}},data() {return {};},mounted() {let tagLIstDom = document.querySelector(".fund .el-select__tags");//   需要加上组件自定义的类名,防止监听失效let tagSpanDom = document.querySelector(".fund .select-tags1 .el-select__tags > span");let hideDom = document.createElement("span");hideDom.classList = ["count-node1"]; //设置样式tagSpanDom.append(hideDom); //插入到span中var config = { childList: true };// 当观察到突变时执行的回调函数var callback = function (mutationsList) {mutationsList.forEach(function (item, index) {if (item.type == "childList") {let tagList = item.target.childNodes;let tagWidth = 0; //标签总宽度let tagNum = 0; //标签多余个数let avaliableTagWidth = 0 //显示标签的总宽度for (let i = 0; i < tagList.length; i++) {const e = tagList[i];if (tagWidth > tagLIstDom.offsetWidth) {e.style.display = "none"; //隐藏多余标签} else {e.style.display = "inline-block"; //显示标签}tagWidth += e.offsetWidth + 5;if (tagWidth > tagLIstDom.offsetWidth) {e.style.display = "none"; //隐藏多余标签} else {e.style.display = "inline-block"; //显示标签}if (e.style.display != "none") {tagNum++;hideDom.style.display = "none"; //隐藏多余标签个数const margin = tagNum === 1 ? 0 : 7avaliableTagWidth += e.offsetWidth + margin} else {hideDom.style.display = "inline-block"; //显示多余标签个数// hideDom.style.left = `${avaliableTagWidth}px` //数字标签的位置设置hideDom.innerHTML = `+${tagList.length - tagNum}`;  //显示多余标签个数}}}});};// 创建一个链接到回调函数的观察者实例observer = new MutationObserver(callback);// 开始观察已配置突变的目标节点observer.observe(tagSpanDom, config);// 随后,您还可以停止观察// observer.disconnect();},methods: {handleChange() {this.$emit("change", this.value);}},computed: {values: {get() {return this.value;},set(val) {this.$emit("input", val);}}},//销毁时beforeDestroy() {// 停止观察observer.disconnect();}
};
</script>
<style>
.count-node1 {position: absolute;right: 0;/* top: 2px; */display: none;height: 24px;padding: 0 8px;line-height: 22px;margin-left: 61px;background-color: #f4f4f5;border: 1px solid #e9e9eb;border-radius: 4px;color: #909399;font-size: 12px;box-sizing: border-box;
}
</style>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/580938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#中的Attribute详解(上)

C#中的Attribute详解&#xff08;上&#xff09; 一、Attribute是什么二、Attribute的作用三、Attribute与注释的区别四、系统Attribute范例1、如果不使用Attribute&#xff0c;为了区分这四类静态方法&#xff0c;我们只能通过注释来说明&#xff0c;但这样做会给系统带来很多…

前端文件在虚拟机,后端在本机,两个如何通信

前端文件在虚拟机&#xff0c;后端在本机&#xff0c;两个如何通信 如果前端的文件放在虚拟机里面&#xff0c;但是调用接口的后端在本地调试&#xff0c;如何做到在虚拟机中也能访问到本地的接口内容。 其实这个问题很简单&#xff0c;只要讲本地的IP和虚拟机中的IP结合就可…

unknown variable ‘authentication_policy=mysql_native_password‘

unknown variable authentication_policymysql_native_password 背景解决尝试一尝试二(解决) 总结 背景 mac上安装多个版本数据库。我是通过dmg安装的&#xff0c;先装的5.7&#xff0c;再装的5.8&#xff0c;然后5.8的能正常用&#xff0c;5.7的启动不起来。报错信息为如下 …

Python五子棋程序实现详解

Python五子棋程序实现详解 引言功能实现显示棋盘点击落子判断胜负游戏结束判断交替落子 运行结果完整代码总结 引言 五子棋是一种广泛传播的策略棋类游戏&#xff0c;两人对弈&#xff0c;通过在棋盘上落子&#xff0c;以先形成连续的相同颜色的五子棋为胜利条件。本文将介绍如…

生存分析序章2——生存分析之Python篇:lifelines库入门

目录 写在开头1. 介绍 lifelines 库1.1 lifelines库简介1.2 安装与环境配置 2. 数据准备2.1 数据格式与结构2.2 处理缺失数据2.3 对异常值的处理 3. Kaplan-Meier 曲线3.1 使用 lifelines 绘制生存曲线3.2 曲线解读3.3 额外补充 4. Cox 比例风险模型4.1 lifelines 中的 Cox 模型…

7+非肿瘤+线粒体+PPI+机器学习+实验,多套路搭配干湿结合

今天给同学们分享一篇生信文章“Identification of mitochondrial related signature associated with immune microenvironment in Alzheimers disease”&#xff0c;这篇文章发表在J Transl Med期刊上&#xff0c;影响因子为7.4。 结果解读&#xff1a; 在ND和AD样本中鉴定差…

vscode调用HTML文件

vscode实现对HTML文件调用 创建html文件下载拓展内容点击拓展查找需要的拓展 导入html代码设置默认打开浏览器运行结果参考文献 做数据库课设的内容,尝试一些自己没有接触过的东西,了解如何创建一个网站以及数据库的一个应用 创建html文件 创建一个html的文件,加入后缀名 下…

Hive04_DDL操作

Hive DDL操作 1 DDL 数据定义 1.1 创建数据库 CREATE DATABASE [IF NOT EXISTS] database_name [COMMENT database_comment] [LOCATION hdfs_path] [WITH DBPROPERTIES (property_nameproperty_value, ...)];[IF NOT EXISTS] &#xff1a;判断是否存在 [COMMENT database_c…

procise纯PL流程点灯记录

procise纯PL流程点灯记录 一、概述 此篇记录使用procise工具构造JFMQL15T 纯PL工程&#xff0c;显示PL_LED闪烁&#xff1b; 硬件说明如下&#xff1a; 时钟引脚 Pl_CLK: U2 ,IO_L14P_T2_SRCC_34 PL_LED1 : E2, IO_L17P_T2_AD5P_35 PL_LED2: D6, IO_L2N_T0_AD8N_35 PL_LED3 :…

.NET CORE 无法调试 当前不会命中断点

多个项目直接可以设置项目的属性->生成->输出的配置文件输出地址 然后路径统一输入该项目的bib/debug/.netcorex.x就可以了

【JAVA】黑马MybatisPlus 学习笔记【终】【插件功能】

4.插件功能 MybatisPlus提供了很多的插件功能&#xff0c;进一步拓展其功能。目前已有的插件有&#xff1a; PaginationInnerInterceptor&#xff1a;自动分页TenantLineInnerInterceptor&#xff1a;多租户DynamicTableNameInnerInterceptor&#xff1a;动态表名OptimisticL…

【Linux】生产者消费者模型(阻塞队列与环形队列)和POSIX信号量

文章目录 一、生产者消费者模型二、基于BlockingQueue的生产者消费者模型1.BlockQueue.hpp2.Task.hpp3.main.cc 三、POSIX信号量四、基于环形队列的生产消费模型1.RingQueue.hpp2.Task.hpp3.main.cc 一、生产者消费者模型 我们这里举一个例子&#xff0c;来解释生产者消费者模…

【数据结构和算法】寻找数组的中心下标

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、题目描述 二、题解 2.1 前缀和的解题模板 2.1.1 最长递增子序列长度 2.1.2 寻找数组中第 k 大的元素 2.1.3 最长公共子序列…

雷盛红酒和云仓酒庄的优势

多国家采购、多葡萄酒品种、多价位区间的全系列整体品牌形式的雷盛&#xff08;LEESON&#xff09;红酒云仓酒庄&#xff0c;具有以下优势&#xff1a; 1.明星代言。雷盛&#xff08;LEESON&#xff09;品牌系列葡萄酒有幸邀请著名导演张纪中先生担任品牌代言人&#xff0c;为…

什么是天线OTA,怎么通过OTA数据评估产品射频环境情况

1.1 验证项目 产品的器件布局、走线是否合理、电源输入输出设计、纹波控制&#xff0c;铺地回流设计等是否合理. 通过验证产品的天线OTA_TIS项目来作为评估当前的设计是否合理之一&#xff0c;重点验证低频部分&#xff0c;如Band8段数据. 1.2 什么是天线OTA 是指某无线产品…

Vue3使用的Compostion Api和Vue2使用的Options Api有什么不同?

我们介绍Compostion Api和Options Api的区别之前&#xff0c;先来说一下为什么会推出来Composition Api&#xff0c;解决了什么问题&#xff1f; Vue2开发项目使用Options Api存在的问题 代码的可读性和维护性随着组件的变大业务的增多而变得差代码的共享和重用性存在缺点不支…

【Linux】进程查看|fork函数|进程状态

&#x1f984; 个人主页——&#x1f390;开着拖拉机回家_Linux,大数据运维-CSDN博客 &#x1f390;✨&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341;&#x1fa81;&#x1f341; &#x1fa81;&#x1f341;&#x1fa81;&am…

H.264宏块(Macroblock)概念(运动估计、变换编码、环路滤波)

参考文章&#xff1a;音视频高手课系列5-h264编码基础(宏块原理) 参考文章&#xff1a;切片slice与宏块&#xff0c;运动矢量 文章目录 使用videoEye分析视频宏块示例H.264宏块概念1. 宏块的定义2. 运动估计3. 变换编码4. 环路滤波5. 注意&#xff1a;宏块的概念既适用于帧内编…

基于Java Swing的图书管理系统

一、项目总体架构 本项目基于Java Swing框架&#xff0c;数据库采用的是MySQL。项目文件夹如下&#xff1a; 二、项目截图 1.登录和注册界面 2.用户界面 3.管理员管理图书类别 4.管理员管理书籍 5.管理员管理用户 项目总体包括源代码和课程论文&#xff0c;需要源码的…

通过MobaXterm远程连接Anolis

目录 前言&#xff1a; 一.设置ip 二.远程连接 前言&#xff1a; 小编已经阐述了如何安装Anolis系统&#xff0c;如果有不了解的小伙伴可以查看这一篇博客Anolis安装 这篇博客将会讲述如何远程连接Anolis系统。各位看官拿好板凳&#xff01; 一.设置ip 打开网卡所在位…