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

【el-tooltips改造】Vue实现文本溢出才显示el-tooltip,否则不显示el-tooltips

实现原理:

使用disabled属性控制el-tooltip的content显示与隐藏;

目标:

1行省略、多行省略、可缩放页面内的文本省略都有效。

实现方式:

1、自定义全局指令,tooltipAutoShow.js代码如下(参考的el-table中的内容超出才显示tooltips的逻辑):

/**
* tooltip-auto-show tooltip不超长则不显示
*/
import Vue from 'vue'
import { getStyle } from 'element-ui/src/utils/dom'
export default {inserted(el, binding, vnode) {el.__vueOverflowTooltipMouseenter__ = function(e) {const defalutSilent = !!Vue.config.silentVue.config.silent = truevnode.componentInstance.disabled = trueconst range = document.createRange()range.setStart(el, 0)range.setEnd(el, el.childNodes.length)const rangeWidth = Math.round(range.getBoundingClientRect().width)const padding = (parseInt(getStyle(el, 'paddingLeft'), 10) || 0) + (parseInt(getStyle(el, 'paddingRight'), 10) || 0)let elWidth = el.offsetWidth// 兼容getBoundingClientRect().width值受scale缩放影响if (el.offsetWidth < Math.round(el.getBoundingClientRect().width)) {elWidth = Math.round(el.getBoundingClientRect().width)}// 1行省略if (rangeWidth + padding > elWidth || el.scrollWidth > elWidth) {vnode.componentInstance.disabled = false}// 处理多行省略if (getStyle(el, '-webkit-line-clamp') > 1 && el.scrollHeight > el.offsetHeight) {vnode.componentInstance.disabled = false}Vue.config.silent = defalutSilent}el.addEventListener('mouseenter', el.__vueOverflowTooltipMouseenter__)},unbind: function(el) {el.removeEventListener('mouseenter', el.__vueOverflowTooltipMouseenter__)delete el.__vueOverflowTooltipMouseenter__}
}
import tooltipAutoShow from './module/tooltipAutoShow'Vue.directive('tooltip-auto-show', tooltipAutoShow)

2、使用方式:

<el-tooltip v-tooltip-auto-show class="" effect="dark" :content="data.name" placement="top-start"><div>{{ data.name }}</div>
</el-tooltip>

3、实现效果:

相关文章:

【el-tooltips改造】Vue实现文本溢出才显示el-tooltip,否则不显示el-tooltips

实现原理&#xff1a; 使用disabled属性控制el-tooltip的content显示与隐藏&#xff1b; 目标&#xff1a; 1行省略、多行省略、可缩放页面内的文本省略都有效。 实现方式&#xff1a; 1、自定义全局指令&#xff0c;tooltipAutoShow.js代码如下&#xff08;参考的el-table中的…...

【Python数据类型的奥秘】:构建程序基石,驾驭信息之海

文章目录 &#x1f680;Python数据类型&#x1f308;1. 基本概念⭐2. 转化&#x1f44a;3. 数值运算&#x1f4a5;4. 数值运算扩展(math库常用函数) &#x1f680;Python数据类型 &#x1f308;1. 基本概念 整数&#xff08;int&#xff09;&#xff1a;整数是没有小数部分的数…...

vue使用html2canvas截图下载时,存在svg或者img或者特殊字体时截图不全的解决办法

使用html2canvas进行div截图时&#xff0c;存在svg和img的解决办法 写在前面&#xff1a;vue使用html2canvas截图时&#xff0c;存在svg或者img或者特殊字体时截图时空白&#xff0c;或者不全解决办法如下第一步&#xff0c;svg或者img先转base64&#xff08;如果是特殊字体&am…...

机器学习----奥卡姆剃刀定律

奥卡姆剃刀定律&#xff08;Occam’s Razor&#xff09;是一条哲学原则&#xff0c;通常表述为“如无必要&#xff0c;勿增实体”&#xff08;Entities should not be multiplied beyond necessity&#xff09;或“在其他条件相同的情况下&#xff0c;最简单的解释往往是最好的…...

【设计模式】行为型设计模式之 模板方法模式

介绍 GOF 定义 模板方法模式 Template Method Design Pattern &#xff1a;模板方法模式在一个方法中定义一个算法骨架&#xff0c;并将某些步骤推迟到子类中去实现&#xff1b;模板方法在不改变算法整体结构的情况下&#xff0c;可以重新定义算法中的某些步骤。 代码举例 …...

智能合约中断言失败

断言失败&#xff1a; 断言&#xff08;assert&#xff09;在智能合约中用于确保内部逻辑的一致性和正确性&#xff0c;但如果使用不当&#xff0c;确实可能导致意外的合约终止或资金锁定。这是因为assert主要用于检测程序内部的错误&#xff0c;例如算法错误或逻辑错误&#…...

flink读取hive写入http接口

目录 0、创建hive数据 1、pom.xml 2、flink代码 3、sink 4、提交任务jar 5、flink-conf.yaml 6、数据接收 flink-1.17.2jdk1.8hive-3.1.3hadoop3.3.6passwordhttp0、创建hive数据 /cluster/hive/bin/beeline !connect jdbc:hive2://ip:10000 create database demo; d…...

【论文阅读】MODELING AND SOLVING THE TRAVELING SALESMAN PROBLEM WITH PRIORITY PRIZES

文章目录 论文基本信息摘要1.引言2. INTEGER QUADRATIC PROGRAM FOR TSPPP3. MIXED INTEGER LINEAR PROGRAMS FOR TSPPP4. TABU SEARCH ALGORITHM FOR TSPPP5. COMPUTATIONAL RESULTS6. CONCLUDING REMARKS补充 论文基本信息 《MODELING AND SOLVING THE TRAVELING SALESMAN P…...

【CS.SE】使用 docker pull confluentinc/cp-kafka 的全面指南

文章目录 1 引言2 准备工作2.1 安装 Docker2.1.1 在 Linux 上安装 Docker2.1.2 在 macOS 上安装 Docker2.1.3 在 Windows 上安装 Docker 2.2 验证 Docker 安装 3 拉取 confluentinc/cp-kafka Docker 镜像3.1 拉取镜像3.2 验证镜像 4 运行 Kafka 容器4.1 启动 ZooKeeper4.2 启动…...

STM32快速入门(ADC数模转换)

STM32快速入门&#xff08;ADC数模转换&#xff09; 前言 ADC数模转换存在的意义就是将一些温度传感器、各自数据传感器产生的模拟信号转换成方便识别和计算的数字信号。 导航 图24 通用定时器框图&#xff1a; 图片截取自STM32 F1XX中文参考手册。还是以框图为中心&#x…...

Linux环境在非root用户中搭建(java-tomcat-redis)

注: 本文在内网(离线)环境&#xff0c;堡垒机中搭建&#xff0c;服务器不同可能有所差异&#xff0c;仅供参考 本文安装JDK-20.0.1版本&#xff0c;apache-tomcat-10.1.10版本&#xff0c;redis-6.2.15版本 本文服务器IP假设&#xff1a;192.168.88.133 root用户创建子用户并…...

Unity 之 代码修改材质球贴图

Unity 之 代码修改材质球贴图 代码修改Shader&#xff1a;ShaderGraph&#xff1a;材质球包含属性 代码修改 meshRenderer.material.SetTexture("_Emission", texture);Shader&#xff1a; ShaderGraph&#xff1a; 材质球包含属性 materials[k].HasProperty("…...

spark-3.5.1+Hadoop 3.4.0+Hive4.0 分布式集群 安装配置

Hadoop安装参考: Hadoop 3.4.0HBase2.5.8ZooKeeper3.8.4Hive4.0Sqoop 分布式高可用集群部署安装 大数据系列二-CSDN博客 一 下载:Downloads | Apache Spark 1 下载Maven – Welcome to Apache Maven # maven安装及配置教程 wget https://dlcdn.apache.org/maven/maven-3/3.8…...

Matlab实现GWO-CNN-LSTM-Mutilhead-Att灰狼算法卷积长短期记忆神经网络融合多头注意力机制预测 SCI顶级优化

数据预处理&#xff1a;准备和清理数据&#xff0c;包括数据的加载、特征提取、归一化等。 GWO (灰狼算法) 的实现&#xff1a;根据灰狼算法的原理和公式&#xff0c;编写 MATLAB 代码来初始化灰狼群体、计算适应度函数、更新位置等。 CNN (卷积神经网络) 的构建&#xff1a;使…...

RTKLIB之RTKPLOT画图工具

开源工具RTKLIB在业内如雷贯耳&#xff0c;其中的RTKPLOT最近正在学习&#xff0c;发现其功能之强大&#xff0c;前所未见&#xff0c;打开了新的思路。 使用思博伦GSS7000卫星导航模拟器,PosApp软件仿真一个载具位置 1&#xff0c;RTKPLOT支持DUT 串口直接输出的NMEA数据并…...

本地部署 RAGFlow

本地部署 RAGFlow 0. RAGFlow 是什么?1. 安装 wsl-ubuntu2. (可选)配置清华大学软件源3. 系统更新和安装构建工具4. 安装 Miniconda35. 安装 CUDA Toolkit6. 安装 git lfs7. 配置 Hugging Face 的缓存路径8. 配置 vm.max_map_count9. 安装 Docker Engine10. 安装 nginx11. 本地…...

php常用数据库操作

文章目录 PHP操作1. mysqli_connect() 连接数据库2. mysqli_close() 关闭数据库3. mysqli_num_rows 查询结果集中的行数4. mysqli_select_db 选择数据库的函数5. mysqli_query 常规的插入查找等6. header( )7.防止 sql 注入 PHP操作 1. mysqli_connect() 连接数据库 2. mysql…...

判断经纬度是否在某个城市内

一、从高德获取指定城市边界经纬度信息 通过apifox操作&#xff1a; 二、引入第三方jar包&#xff1a; maven地址&#xff1a;https://mvnrepository.com/ maven依赖&#xff1a; <dependency><groupId>org.locationtech.jts</groupId><artifactId>…...

Java——数组排序和查找

一、排序介绍 1、排序的概念 排序是将多个数据按照指定的顺序进行排列的过程。 2、排序的种类 排序可以分为两大类&#xff1a;内部排序和外部排序。 3、内部排序和外部排序 1&#xff09;内部排序 内部排序是指数据在内存中进行排序&#xff0c;适用于数据量较小的情况…...

Flutter中防抖动和节流策略

什么是防抖和节流&#xff1f; 函数节流&#xff08;throttle&#xff09;与 函数防抖&#xff08;debounce&#xff09;都是为了限制函数的执行频次&#xff0c;以优化函数触发频率过高导致的响应速度跟不上触发频率&#xff0c;出现延迟&#xff0c;假死或卡顿的现象 是应对频…...

WebSocket代理避坑指南:Nginx中proxy_set_header的3个关键配置项

WebSocket代理实战&#xff1a;Nginx中proxy_set_header的3个黄金法则 当在线聊天室的用户突然集体掉线&#xff0c;或是实时协作文档频繁失去同步时&#xff0c;问题往往藏在那些容易被忽视的HTTP头信息里。WebSocket作为现代实时应用的血管&#xff0c;其代理配置的精细程度直…...

谈谈你对springAop动态代理的理解?

面试 你要调用目标方法&#xff0c;不直接调用&#xff0c;而是交给代理对象&#xff0c;代理对象会先做额外功能&#xff0c;再调用原方法&#xff0c;最后再收尾。 至于叫动态代理的原因&#xff0c;是因为这个代理不是你手动写死的&#xff0c;而是程序在运行期间动态生成…...

B站视频下载工具终极指南:3分钟快速上手,轻松保存你喜欢的每一帧画面

B站视频下载工具终极指南&#xff1a;3分钟快速上手&#xff0c;轻松保存你喜欢的每一帧画面 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持视频、音乐、番剧、课程下载……持续更新 项目地址: https://gitcode.com/G…...

深度解析:Beyond Compare 5授权机制与密钥生成技术

深度解析&#xff1a;Beyond Compare 5授权机制与密钥生成技术 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 在软件授权领域&#xff0c;Beyond Compare 5的RSA加密授权系统展现了商业软件保护…...

别再犯这些错误!英文邮件写作中的常见误区与正确写法

英文邮件写作进阶指南&#xff1a;避开9个致命错误&#xff0c;展现专业沟通力 在跨国商务沟通中&#xff0c;一封得体的英文邮件就像精心设计的数字名片。我曾见证过一位工程师因为邮件中一个称呼错误&#xff0c;导致价值200万美元的合同谈判陷入僵局&#xff1b;也见过实习生…...

DHCP实验1

一、实验拓扑二、实验需求 1.PC1和PC2使用路由器模拟2.PC1和R1的g0/0口连接到SW的vlan10&#xff1b;PC2和R1的g0/1口连接到SW的vlan203.R1在vlan10的IP地址为192.168.1.1/24&#xff0c;vlan20的IP地址为192.168.2.1/244.在R1上配置DHCP服务&#xff0c;分别为2个网段分配IP地…...

别再纠结在线辨识了!聊聊永磁同步电机(PMSM)离线参数自学习的完整流程与避坑指南

永磁同步电机离线参数辨识实战&#xff1a;从理论到工程落地的全流程解析 在电机控制领域&#xff0c;参数辨识一直是个让人又爱又恨的话题。尤其是当项目从实验室走向量产时&#xff0c;那些在仿真中运行良好的算法&#xff0c;往往会因为实际电机参数的偏差而表现失常。我曾亲…...

深入FFmpeg解码器:从avcodec_send_packet看硬解与软解的实现差异

深入FFmpeg解码器&#xff1a;从avcodec_send_packet看硬解与软解的实现差异 在多媒体处理领域&#xff0c;FFmpeg无疑是开发者最常接触的开源框架之一。其强大的编解码能力支撑着从视频播放器到直播系统的各类应用&#xff0c;而解码器作为其中的核心组件&#xff0c;其性能直…...

从沙子到芯片:保姆级图解CMOS制造18步核心工艺(附高清流程图)

从沙子到芯片&#xff1a;图解CMOS制造18步核心工艺 想象一下&#xff0c;你手中智能手机的核心处理器&#xff0c;其内部晶体管数量已突破百亿级——这相当于将整个银河系的恒星数量压缩到指甲盖大小的硅片上。而这一切的起点&#xff0c;竟是海滩上最普通的沙子。本文将用18张…...

PHP 数组 vs SPL 数据结构:队列与栈场景下的性能对决

PHP 数组 vs SPL 数据结构&#xff1a;队列与栈场景下的性能对决在 PHP 开发中&#xff0c;我们常常面临一个经典的选择&#xff1a;是使用灵活的原生数组&#xff08;Array&#xff09;模拟队列/栈&#xff0c;还是使用标准库&#xff08;SPL&#xff09;提供的 SplQueue 和 S…...