Element Plus组件库el-select组件多选回显踩坑
前情
公司有经常需要做一些后台管理页面,我们选择了Element Plus,它是基于 Vue 3,面向设计师和开发者的组件库,是Vue框架生态中比较火的UI组件库,组件库丰富易用,组件链接:一个 Vue 3 UI 框架 | Element Plus,项目中经常会用到el-select多选功能,组件自带的多选交互也是非常棒的,标签回显示结果,同时支持通过标签取消选择,对于Element Plus 2.5以上版本还支持通过slot自定义回显tag
坑位
最近在开发一个产品提的优化功能,部分表单需要由单选切换到多选,对于强大的Element Plus来说el-select增加一个属性multiple即可实现多选,确实好用,一个属性就实现了从单选到多选的功能于是开心的提测了,跟测试说很简单的功能,你点点就能测完了,提测半小时不到测试直接找到我,说我坑它,这么大的错位问题,跟我说点点就行了,我当时一脸尴尬,测试反映的问题如下图:
Why?
于是特意看了一下el-select在页面上结构,发现它是回显在的样式名为el-select__tags的元素中的,而它又是通过定位实现盖在输入框上的,它的定位又是相对于样式名为el-select的根元素的,但整个表单又用了grid布局,同一行有一项撑高,别的项都会跟着撑高了,所以导致定位出现了偏差
解决方案1
可以给el-select组件包一层,这样撑高的只会是包的这一层,不会影响组件自身,问题解决
解决方案2
既然它定位是相对于样式名为el-select组件根元素,那我们何不修改它的相对定位元素了,把它改到样式名为el-tooltip__trigger的元素上即可,其实这里又发现组件库的另一个小问题,一个元素出现了二个同样的样式名
解决方案3
既然多选导致表单撑高,那我们有什么方法不让它撑高么,查询了组件文挡,发现了二个可用配置,给组件添加collapse-tags属性,无法显示的时候它会在后面显示一个+N的标签,告诉用户后面还有多少个,如果只是增加一个+N的标签,对于用户来说不是很明显当前到底选了哪些项,这时你再添加collapse-tags-tooltip属性,你会发现这交互就非常棒了,详见下图:
总结
个人推荐使用第三种,侵入性小,修改工作量也是最小的,也是我用的方式,同时也保证了表单布局格式的统一,不会因为多选而导致表单有高有低影响美观,当然解决些问题的方法千千万,其中我也尝试让它超出显示省略号,超出滚动条等,但是尝试体验都不太理想。如果你有更好的解决方案,欢迎留言分享,一起讨论进步。
Element Plus组件库el-select组件多选回显踩坑的更多相关文章
- Vue3 企业级优雅实战 - 组件库框架 - 7 组件库文档的开发和构建
该系列已更新文章: 分享一个实用的 vite + vue3 组件库脚手架工具,提升开发效率 开箱即用 yyg-cli 脚手架:快速创建 vue3 组件库和vue3 全家桶项目 Vue3 企业级优雅实战 ...
- ElementUI2.0组件库el-table表格组件如何自定义表头?
效果图: npm run dev 编译项目之后,报错,要使用jsx语法需要先安装编译插件 1.安装下列安装包 npm install babel-plugin-syntax-jsx --save-de ...
- Vue3 企业级优雅实战 - 组件库框架 - 5 组件库通用工具包
该系列已更新文章: 分享一个实用的 vite + vue3 组件库脚手架工具,提升开发效率 开箱即用 yyg-cli 脚手架:快速创建 vue3 组件库和vue3 全家桶项目 Vue3 企业级优雅实战 ...
- iview库表table组件内嵌套Select组件
表格内render函数渲染Select组件 { title: '属性值', key: 'values', render:(h,params)=>{ return h('Select',{ ...
- Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构
在前一篇文章中分享了搭建组件库的基本开发环境.创建了 foo 组件模块和组件库入口模块,本文分享组件库的样式架构设计. 1 常见的 CSS 架构模式 常见的 CSS 架构模式有很多:OOCSS.ACS ...
- Bootstrap Blazor 组件库 Row 布局组件(栅格系统)
原文链接:https://www.cnblogs.com/ysmc/p/16133351.html 在 Bootstrap 中,栅格相信大家都很熟悉,简直就是布局神器啊,Bootstrap Blazo ...
- Blazor Bootstrap 组件库浏览器通知组件介绍
通知组件 通过浏览器API发送通知信息 , 桌面浏览器表现为右下角系统提示框弹出消息, 移动浏览器表现为弹窗或者到消息列表, blazor页面不在前台也可以通过本组件提醒用户. DEMO https: ...
- 从0搭建vue3组件库:Shake抖动组件
先看下效果 其实就是个抖动效果组件,实现起来也非常简单.之所以做这样一个组件是为了后面写Form表单的时候会用到它做一个规则校验,比如下面一个简单的登录页面,当点击登录会提示用户哪个信息没输入,当然这 ...
- Vue3 企业级优雅实战 - 组件库框架 - 11 组件库的打包构建和发布
回顾第一篇文章中谈到的组件库的几个方面,只剩下最后的.也是最重要的组件库的打包构建.本地发布.远程发布了. 1 组件库构建 组件库的入口是 packages/yyg-demo-ui,构建组件库有两个步 ...
- vue element select多选回显
我们经常在使用 Element组件里面的 select多选 场景:添加账号的时候需要选择可见分公司(分公司为多选),添加成功之后可以编辑,需要回显添加时所提交的分公司 代码如下: 多选框: data( ...
随机推荐
- 手搓大模型Task03:手搓一个最小的 Agent 系统
前言 训练一个大模型是一件高投入低回报的事情,况且训练的事情是由大的巨头公司来做的事情:通常我们是在已有的大模型基础之上做微调或Agent等:大模型的能力是毋庸置疑的,但大模型在一些实时的问题上, ...
- 2024年7月中国数据库排行榜:PolarDB独领云风骚,达梦跨越新巅峰
在7月发布的中国数据库流行度排行榜中,各大国产数据库厂商在不同领域表现势如破竹,PolarDB以800分刷新记录,并在SIGMOD 2024上获得"最佳论文奖":OceanBase ...
- YoloDotNet v2.1:实时物体检测的利器
项目介绍 YoloDotNet v2.1 是一个基于 C# 和 .NET 8 的实时物体检测框架,专为图像和视频中的物体检测而设计.它集成了 Yolov8 ~ Yolov11 模型,通过 ML.NET ...
- 4:Exchange安装后的任务
4:Exchange安装后的任务 安装后的任务: 第一:证书的申请安装,分配服务略 注意项:如果是通配符证书,不能直接分配pop的服务 第二:虚拟目录的配置 Exchang ...
- KubeKey 2.0.0 发布:让离线部署 K8s 更加便捷
2022 年 3 月 8 日,KubeKey 2.0.0 正式发布,这是 KubeKey 的第 7 个正式版本,也是非常重要的一个版本.该版本新增了清单(manifest)和制品(artifact)的 ...
- 华为Ensp拓扑,使用MSTP、OSPF、DHCP、VRRP、链路聚合、CHAP
OSPF+DHCP+VRRP+Eth-trunk+PPP(CHAP)+MSTP 实验目标: LSW1和LSW2核心交换机互为备份,配置链路聚合,设备冗余设计,LSW1和LSW2作为核心交换机配置DHC ...
- awk 处理 Git 提交信息生成 Release Note
发布软件时通常都会写 Release Note,但每次从头手打也有点累,可以考虑从 Git 的提交历史中自动生成. Git 提交信息一般是三段式结构,段落之间使用空行隔开: <subject&g ...
- 基于sqli-labs Less-5 sql报错注入详解
按照之前的思路发现,是正常的'闭合的字符型,但是在联合注入0' union select 1,2,3--+没有回显注入点,只是回显You are in,因此无法使用联合注入,考虑使用报错注入或者盲注. ...
- games101_Homework4
实现四个点的贝塞尔曲线 作业描述: • bezier:该函数实现绘制 Bézier 曲线的功能.它使用一个控制点序列和一个 OpenCV::Mat 对象作为输入,没有返回值.它会使 t 在 0 到 1 ...
- 内核源码+vscode+bear+clang实现函数任意跳转,无缝跳转,无缝阅读,无缝开发
一.准备工作 1.内核源码版本选择 务必有一份能编译通过的<内核源码>,本次选择5.10版本的. #说明:5.10版本的<内核源码>里,在 scripts/clang-tool ...