当前位置: 首页 > 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}
}

http://www.lryc.cn/news/279227.html

相关文章:

  • 高防dns服务器租用有哪些应用场景?-速盾cdn
  • 使用 Goroutine 和 Channel 来实现更复杂的并发模式,如并发任务执行、并发数据处理,如何做?
  • 7个向量数据库对比:Milvus、Pinecone、Vespa、Weaviate、Vald、GSI 和 Qdrant
  • 【正点原子】STM32电机应用控制学习笔记——8.FOC简介
  • Salesforce财务状况分析
  • 服务器管理平台开发(2)- 设计数据库表
  • Python基础知识:整理13 利用pyecharts生成折线图
  • java项目之家政服务中介网(ssm)
  • Spark的内核调度
  • C++代码重用:继承与组合的比较
  • 暴打小苹果
  • 【BetterBench】2024年都有哪些数学建模竞赛和大数据竞赛?
  • Vue-9、Vue事件修饰符
  • 前端面试题集合六(高频)
  • 使用Pygame库创建了一个窗口,并在窗口中加载了一个名为“ball.png“的图片,通过不断改变物体的位置,实现了一个简单的动画效果
  • 常见的AdX程序化广告交易模式有哪些?媒体如何选择恰当的交易模式?
  • VCG 网格平滑之Laplacian平滑
  • Jupyter Markdown格式
  • Vue3 实时显示时间
  • 详解Java多线程之循环栅栏技术CyclicBarrier
  • ebpf学习
  • 【Linux】Linux系统编程——ls命令
  • QA面试题
  • 【国产mcu填坑篇】华大单片机(小华半导体)一、SPI的DMA应用(发送主机)HC32L136
  • 【前后端的那些事】treeSelect树形结构数据展示
  • 华为OD机试 - 最长子字符串的长度(二)(Java JS Python C)
  • 【VRTK】【Unity】【游戏开发】更多技巧
  • Spark 读excel报错,scala.MatchError
  • 【漏洞复现】Office365-Indexs-任意文件读取
  • 使用Python向RabbitMQ发送JSON数据只需要一个send_json方法