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

判断css文字发生了截断,增加悬浮提示

示例:

固定显示宽度,溢出显示...,利用了css的属性,想要实现成下面这样: 

针对溢出的文字,hover显示全部。 

提示很好加,使用tooltip组件就行了,难点是如何判断是否发生了文字溢出。

利用dom元素的可视宽度 clientWidth 实际宽度 scrollWidth 不同就可以比较出是否发生了文字溢出。

 实际宽度 > 可视宽度  = 文字溢出

那么就可以依此来判断,如下图所示,给各行增加ref属性,鼠标移入时判断是否显示对应行的提示信息。

我这里之所以鼠标移入时触发计算,是因为我卡片的宽度是动态变化的,若你那块内容宽度固定,可以在数据获取完成之后直接计算showTooltipObj的值。

全部代码如下图所示:

<template><div class="card"><ul><li v-for="(item, index) in rows" :key="item.key" class="content"><b>{{ item.label }}:</b><el-tooltipeffect="dark"placement="top":disabled="!showTooltipObj[index]"max-width="600px"><div slot="content"><span>{{ data[item.key] || '--' }}</span></div><span:ref="`rowValue${index}`"class="value"@mouseenter="mouseenterFn(index)"><span>{{ data[item.key] || '--' }}</span></span></el-tooltip></li></ul></div>
</template><script>
export default {// eslint-disable-next-line vue/multi-word-component-namesname: "Card",data() {// 这里存放数据return {rows: [{label: "姓名",key: "name",},{label: "年龄",key: "age",},{label: "爱好",key: "hobby",}],data: {name: "张三",age: 10,hobby: "吃饭、睡觉、打篮球、玩玩玩玩玩玩玩玩玩玩玩玩玩玩玩玩玩玩玩玩玩",},showTooltipObj: {},};},methods: {mouseenterFn(index) {this.$nextTick(() => {const dom = this.$refs[`rowValue${index}`][0];let flag = false;// 实际宽度 > 可视宽度  文字溢出if (dom.scrollWidth > dom.clientWidth) {flag = true;}this.$set(this.showTooltipObj, index, flag);});},},
};
</script>
<style lang='scss' scoped>
.card {margin: 40px;width: 400px;box-shadow: 0px 2px 10px 0px rgba(0, 0, 0, 0.16);border: 1px solid #d7d7d7;box-sizing: border-box;padding: 20px 0;li.content {margin: 0 20px;line-height: 22px;display: flex;b {white-space: nowrap;}.value {overflow: hidden;text-overflow: ellipsis;white-space: nowrap;}}
}
</style>

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

相关文章:

  • day33-37-SpringBootV12(整合Spring,SpringMVC,Mybatis,日志,api测试等框架)
  • 如何处理好面试中的“压力测试”?
  • 大数据----31.hbase安装启动
  • ChatGPT Plus重新开启订阅
  • C#科学绘图之scottPlot绘制多个图像
  • 二百一十五、Flume——Flume拓扑结构之复制和多路复用的开发案例(亲测,附截图)
  • Leetcode—2962.统计最大元素出现至少 K 次的子数组【中等】
  • MapReduce模拟统计每日车流量-解决方案
  • 【深度学习】强化学习(二)马尔可夫决策过程
  • Vue.js 使用基础知识
  • Linux---计划任务
  • .NET微信网页开发之通过UnionID机制解决多应用用户帐号统一问题
  • 【docker】docker入门与安装
  • 视觉学习笔记12——百度飞浆框架的PaddleOCR 安装、标注、训练以及测试
  • 深入分析ClassLocader工作机制
  • 算法通关村第十二关—字符串转换(青铜)
  • C#基础与进阶扩展合集-基础篇(持续更新)
  • ReactJs笔记摘录
  • 2023 re:Invent使用 PartyRock 和 Amazon Bedrock 安全高效构建 AI 应用程序
  • Mac 打不开github解决方案
  • 十五 动手学深度学习v2计算机视觉 ——全连接神经网络FCN
  • elementUI中的 “this.$confirm“ 基本用法,“this.$confirm“ 调换 “确认“、“取消“ 按钮的位置
  • K8S 常用命令
  • 12.使用 Redis 优化登陆模块
  • Nacos-NacosRule 负载均衡—设置集群使本地服务优先访问
  • 软件设计师——信息安全(二)
  • Unity中实现ShaderToy卡通火(原理实现篇)
  • 引迈信息-JNPF平台怎么样?值得入手吗?
  • 大数据云计算——使用Prometheus-Operator进行K8s集群监控
  • [蓝桥杯刷题]合并区间、最长不连续子序列、最长不重复数组长度