前情


公司有经常需要做一些后台管理页面,我们选择了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组件多选回显踩坑的更多相关文章

  1. Vue3 企业级优雅实战 - 组件库框架 - 7 组件库文档的开发和构建

    该系列已更新文章: 分享一个实用的 vite + vue3 组件库脚手架工具,提升开发效率 开箱即用 yyg-cli 脚手架:快速创建 vue3 组件库和vue3 全家桶项目 Vue3 企业级优雅实战 ...

  2. ElementUI2.0组件库el-table表格组件如何自定义表头?

    效果图: npm run dev 编译项目之后,报错,要使用jsx语法需要先安装编译插件 1.安装下列安装包 npm install babel-plugin-syntax-jsx --save-de ...

  3. Vue3 企业级优雅实战 - 组件库框架 - 5 组件库通用工具包

    该系列已更新文章: 分享一个实用的 vite + vue3 组件库脚手架工具,提升开发效率 开箱即用 yyg-cli 脚手架:快速创建 vue3 组件库和vue3 全家桶项目 Vue3 企业级优雅实战 ...

  4. iview库表table组件内嵌套Select组件

    表格内render函数渲染Select组件   { title: '属性值', key: 'values', render:(h,params)=>{ return h('Select',{   ...

  5. Vue3 企业级优雅实战 - 组件库框架 - 4 组件库的 CSS 架构

    在前一篇文章中分享了搭建组件库的基本开发环境.创建了 foo 组件模块和组件库入口模块,本文分享组件库的样式架构设计. 1 常见的 CSS 架构模式 常见的 CSS 架构模式有很多:OOCSS.ACS ...

  6. Bootstrap Blazor 组件库 Row 布局组件(栅格系统)

    原文链接:https://www.cnblogs.com/ysmc/p/16133351.html 在 Bootstrap 中,栅格相信大家都很熟悉,简直就是布局神器啊,Bootstrap Blazo ...

  7. Blazor Bootstrap 组件库浏览器通知组件介绍

    通知组件 通过浏览器API发送通知信息 , 桌面浏览器表现为右下角系统提示框弹出消息, 移动浏览器表现为弹窗或者到消息列表, blazor页面不在前台也可以通过本组件提醒用户. DEMO https: ...

  8. 从0搭建vue3组件库:Shake抖动组件

    先看下效果 其实就是个抖动效果组件,实现起来也非常简单.之所以做这样一个组件是为了后面写Form表单的时候会用到它做一个规则校验,比如下面一个简单的登录页面,当点击登录会提示用户哪个信息没输入,当然这 ...

  9. Vue3 企业级优雅实战 - 组件库框架 - 11 组件库的打包构建和发布

    回顾第一篇文章中谈到的组件库的几个方面,只剩下最后的.也是最重要的组件库的打包构建.本地发布.远程发布了. 1 组件库构建 组件库的入口是 packages/yyg-demo-ui,构建组件库有两个步 ...

  10. vue element select多选回显

    我们经常在使用 Element组件里面的 select多选 场景:添加账号的时候需要选择可见分公司(分公司为多选),添加成功之后可以编辑,需要回显添加时所提交的分公司 代码如下: 多选框: data( ...

随机推荐

  1. dotnet实现多态的三种方法

    虚方法 virual 抽象方法 abstract 不能 new  不带方法体: 接口 Interface

  2. KubeSphere 社区双周报 | KubeSphere 多项更新 | 2023.06.23-07.06

    KubeSphere 社区双周报主要整理展示新增的贡献者名单和证书.新增的讲师证书以及两周内提交过 commit 的贡献者,并对近期重要的 PR 进行解析,同时还包含了线上/线下活动和布道推广等一系列 ...

  3. 云原生爱好者周刊:非容器化应用也需要 Docker Compose

    开源项目推荐 Process Compose Process Compose 是一个调度编排工具,不过不是用来调度容器的,而是用来调度非容器化的应用,可以定义进程的依赖性和启动顺序,也可以定义重启策略 ...

  4. docker容器开启ssh服务

    http://www.dtmao.cc/news_show_703007.shtml Step1 利用CentOS基础镜像,创建一个docker容器,主要这里要指定端口映射,必须要映射到容器内的22端 ...

  5. MoeCTF2024--Crypto--Week1&Week2

    MOECTF (CRYPTO) Week1: 1.入门指北 题目: from Crypto.Util.number import bytes_to_long, getPrime from secret ...

  6. Postman 免登录测试后端接口

    今天跟测试同学学习了下用Postman免登录测试后端接口,测试同学除了会对我们系统前端测试外,一些后端接口涉及危险操作也会使用Postman 对接口进行测试,这个时候就需要解决一个接口免登录的问题,他 ...

  7. cnblogs内容同步到51cto上的说明(声明)

    51CTO网站上的blog地址为:https://blog.51cto.com/u_15642578 该地址是个人在博客园cnblogs上的同步账号(https://cnblogs.com/xyz), ...

  8. 23.Kubernetes中的CRI

    Kubernetes中的CRI 前言 Kubernetes 节点的底层由一个叫做容器运行时的软件进行支撑,它主要负责启停容器. Docker 是目前最广为人知的容器运行时软件,但是它并非唯一.在这几年 ...

  9. downloadFile:base64数据导出文件,文件下载

    function downloadFile(filename, data){ let DownloadLink = document.createElement('a'); if ( Download ...

  10. isObjectLike:检查 value 是否是 类对象。 如果一个值是类对象,那么它不应该是 null,而且 typeof 后的结果是 "object"

    function isObjectLike(value) { return value != null && typeof value == 'object';}