Element Plus组件库el-select组件多选回显踩坑

news/2024/12/18 20:57:28/文章来源:https://www.cnblogs.com/xwwin/p/18615839

前情


公司有经常需要做一些后台管理页面,我们选择了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属性,你会发现这交互就非常棒了,详见下图:

总结

个人推荐使用第三种,侵入性小,修改工作量也是最小的,也是我用的方式,同时也保证了表单布局格式的统一,不会因为多选而导致表单有高有低影响美观,当然解决些问题的方法千千万,其中我也尝试让它超出显示省略号,超出滚动条等,但是尝试体验都不太理想。如果你有更好的解决方案,欢迎留言分享,一起讨论进步。

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

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

相关文章

Transformers 框架 Pipeline 任务详解(四):问答(question-answering)

本文深入介绍了 Transformers 框架中的 question-answering 任务,涵盖任务简介、应用场景如智能助手和客户服务、任务配置与模型选择、实战代码示例,以及如何利用 Gradio 创建 WebUI 界面,使用户能通过浏览器实时获取问答结果。文章旨在帮助读者快速掌握使用 Transformers 构…

docker高级篇(大厂进阶):安装mysql主从复制

docker高级篇(大厂进阶):安装mysql主从复制@目录1.Docker复杂安装详说1.1安装mysql主从复制本人其他相关文章链接 1.Docker复杂安装详说 1.1安装mysql主从复制主从搭建步骤: 1)新建主服务器容器实例3307 2)进入/mydata/mysql-master/conf目录下新建my.cnf 3)修改完配置后…

Bugku-CTF getshell

前几天在打2024 长城杯 & 国赛时发现的一道类似题题目:<?php define(pfkzYUelxEGmVcdDNLTjXCSIgMBKOuHAFyRtaboqwJiQWvsZrPhn, __FILE__); $cPIHjUYxDZVBvOTsuiEClpMXAfSqrdegyFtbnGzRhWNJKwLmaokQ = urldecode("%6E1%7A%62%2F%6D%615%5C%76%740%6928%2D%70%78%7…

无锡在线教育系统开发怎么样

无锡在线教育系统的开发作为当前教育领域内的一种创新方式,正在逐渐受到更多人的重视和应用。从现有的数据来看,它不仅提升了教学质量和学习的灵活性,还能在很大程度上降低运营和维护成本。那么,究竟这种开发状况是怎样的,接下来我们深入了解一下其发展情况及前景。来自ww…

Obfuscar:一款针对.NET程序的开源代码混淆工具

关于Obfuscar Obfuscar是一款针对.NET程序的开源代码混淆工具,该工具支持使用大量重载将 .NET 程序集中的元数据(包括方法、属性、事件、字段、类型和命名空间的名称)重命名为最小集合,在大多数情况下仅通过签名即可区分。 例如,如果某个类仅包含接受不同参数的方法,则可…

批量数据传入数据库方法方案

前端处理好的数据,不是1笔2笔的问题,而是每次几笔或是大批量数据传入数据库。实际上,还是讲求效率与性能。在Insus.NET的博客中,找到几篇以前的随笔,1 使用SqlBulkCopy导入数据至MS SQL Server https://www.cnblogs.com/insus/p/3779879.html 2 ASP.NET MVC一次删除多…

玩家结构体和枚举

玩家结构体包含了玩家类型,玩家位置,玩家初始化构造函数还有画自己的函数方法玩家结构体 enum E_PlayerType//玩家类型的枚举 {Player,Robot, } struct Player {public E_PlayerType type;//用地图上的索引代替坐标public mapIndex;public Player(int index,E_PlayerType typ…

Windows Server 2019 配置PHP环境(图文教程)

操作系统:Windows Server 2019运行模式:IIS10 + fastcgi + PHP(安装IIS的时候选择上CGI)软件版本:MySQL 5.7.37 解压版 / PHP 7.4.29 / PHP Manager 1.5.0 / phpMyAdmin 5.1.31、MySQL 5.7.37 解压版安装: 为什么我会选择解压版而不是安装版?一是因为安装版没有64位版本…

微服务的终极 Golang 框架:GoFr

微服务的终极 Golang 框架:GoFr 原创 南丞 PFinalClub2024年12月18日 13:18 上海PFinalClub 一个有信念者所开发出的力量,大于99个只有兴趣者。 113篇原创内容公众号微服务的终极 Golang 框架:GoFr 前言 Go 语言因其出色的并发处理能力和简洁的语法,成为开发微服务的理想选…

R机器学习:朴素贝叶斯算法的理解与实操

最近又看了很多贝叶斯算法的一些文章,好多的文章对这个算法解释起来会放一大堆公式,对代数不好的人来说真的很头疼。本文尝试着用大白话写写这个算法,再做个例子,帮助大家理解和运用。Naive Bayes is a probabilistic machine learning algorithm based on the Bayes Theor…

[Linux]线程

线程 页表 每个进程都有一个虚拟地址空间,虚拟地址通过页表的映射找到对应的物理地址。那页表是如何完成虚拟地址到物理地址的映射的呢?其实一个程序在磁盘上的时候就以4KB为单位被划分成块,每一块称为页帧;而物理内存同样是以4KB为单位被划分,每一块称为页框。所以程序都…