当前位置: 首页 > news >正文

vue、element-ui使用el-tooltip判断文本是否溢出

1.需求:需要实现文本单行显示,超出时,使用省略号,划过该文本时使用tooltip显示全部文本。需要考虑数据是由接口动态获取,只有溢出文本鼠标滑过时显示全部文本,没有溢出的则不需要。

2.实现:

第一步:首先要判断文本是否溢出

这里网上可以找到很多方法,我是用scrollWidth去拿到实际文本长度,跟clientWidth文本可视宽度作比较。需要注意的是我遇到了一个问题,即

判断文本溢出之前一定要使用单行文件溢出显示省略号的css,并且要加在tooltip内部要溢出隐藏的span上,不然scrollWidth和clientWidth会一直为0

 onMouseOver(event) {const ev = event.target;const evWeight = ev.scrollWidth;const contentWidth = ev.clientWidth;if (evWeight > contentWidth) {this.isShowTooltip = false;} else {this.isShowTooltip = true;}},
    <el-row v-for="(row, rowIndex) in djnumberOfRows" :key="rowIndex"><el-colv-for="(column, colIndex) in row.length":key="colIndex":span="calculateSpan(row, rowIndex, djnumberOfRows.length, colIndex)"><template v-if="row[colIndex]"><el-form-item class="radioClass" :label="row[colIndex].name"><el-tooltip:content="djForm ? djForm[row[colIndex].fieldskey] : ''":disabled="isShowTooltip"placement="top"><div@mouseover="onMouseOver($event)"style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;">{{ djForm ? djForm[row[colIndex].fieldskey] : '' }}   //之前我在这里包了一层span,是错误的,会导致拿到的不准,有的是0,有的地方不是,因为span有范围。为什么会在这加一层span,用div,因为省略号</div></el-tooltip></el-form-item></template></el-col></el-row>

补充:(未试)

methods: {onMouseOver (str) { // 内容超出,显示文字提示内容const tag = this.$refs[str]const parentWidth = tag.parentNode.offsetWidth // 获取元素父级可视宽度const contentWidth = tag.offsetWidth // 获取元素可视宽度this.isShowTooltip = contentWidth <= parentWidth}
}

相关文章:

  • MySQL-外键等信息
  • 【野火i.MX6NULL开发板】Linux系统下的Hello World
  • 关于 Java JDK 中内置的一个类:java.lang.String
  • java+vue基于Spring Boot的渔船出海及海货统计系统
  • AI与编程学习
  • npm报错error:03000086:digital envelope routines::initialization error
  • C#/.NET学习值得推荐的在线论坛和技术社区
  • 即时设计:设计稿与PPT完美结合,让您的创意作品更具影响力
  • 代码随想录算法训练营Day23|669. 修剪二叉搜索树、108.将有序数组转换为二叉搜索树、538.把二叉搜索树转换为累加树
  • 实验五:动态路由配置
  • Rust-类型
  • 论文阅读1---OpenCalib论文阅读之factory calibration模块
  • 【linux】tcpdump 使用
  • Codeforces Round 761 (Div. 2) D2. Too Many Impostors (hard version)(交互+构造 最小次数)
  • DNS 在互联网中的作用是什么?
  • 【从零开始安装kubernetes-1.7.3】2.flannel、docker以及Harbor的配置以及作用
  • Android Volley源码解析
  • C++类的相互关联
  • conda常用的命令
  • es6要点
  • extract-text-webpack-plugin用法
  • JavaScript 基础知识 - 入门篇(一)
  • Kibana配置logstash,报表一体化
  • leetcode46 Permutation 排列组合
  • mysql外键的使用
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 入门级的git使用指北
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 硬币翻转问题,区间操作
  • 原生JS动态加载JS、CSS文件及代码脚本
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​一些不规范的GTID使用场景
  • # Apache SeaTunnel 究竟是什么?
  • #图像处理
  • #我与Java虚拟机的故事#连载19:等我技术变强了,我会去看你的 ​
  • (a /b)*c的值
  • (第61天)多租户架构(CDB/PDB)
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (译)计算距离、方位和更多经纬度之间的点
  • (转)jQuery 基础
  • (转)大道至简,职场上做人做事做管理
  • .NET Framework与.NET Framework SDK有什么不同?
  • .NET下ASPX编程的几个小问题
  • .Net中ListT 泛型转成DataTable、DataSet
  • .skip() 和 .only() 的使用
  • @Repository 注解
  • @RunWith注解作用
  • [ 蓝桥杯Web真题 ]-Markdown 文档解析
  • [ 隧道技术 ] 反弹shell的集中常见方式(二)bash反弹shell
  • [Android]常见的数据传递方式
  • [AutoSAR 存储] 汽车智能座舱的存储需求
  • [DevEpxress]GridControl 显示Gif动画
  • [Flutter]设置应用包名、名称、版本号、最低支持版本、Icon、启动页以及环境判断、平台判断和打包
  • [IE编程] 多页面基于IE内核浏览器的代码示例