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

vue3二次封装tooltip实现el-table中的show-overflow-tooltip效果

开发过程中遇到需要根据后端返回的数据长度来判断是否需要使用el-tooltip的情况,想到el-table里面就有这种交互效果,如果不论文字是否超出容器长度都展示tooltip的话,交互效果难免会差很多,所以二次封装了这个组件:

  1. 给目标容器绑定mouseenter事件
  2. 鼠标移入后克隆一下目标元素,并取消该元素的宽度样式
  3. 将克隆元素插入到页面中
  4. 获取克隆元素的文字后将元素从页面移除
  5. 用文字所占宽度跟容器宽度进行对比,判断展示tooltip

注意:二次封装的组件需要接收一个双向绑定的disabled变量,该示例比较简单,大家可以根据自己的需要对组件接收的字段进行补充

代码如下:

<template><el-tooltip:show-after="300":disabled="disabled":content="content"placement="top"><div class="ellipsis" @mouseenter="handleMouseSource">{{ content }}</div></el-tooltip>
</template><script setup>
const props = defineProps({disabled: {type: Boolean,default: false,},content: {type: String,default: "",},
});
// 注意disabled是双向绑定的,使用该组件时要用v-model:disabled = disabled
const emits = defineEmits(["update:disabled"]);// 判断当前tooltip是否显示
const handleMouseSource = (e) => {// 克隆原始div,但移除宽度样式(如果需要的话,也可以移除其他可能影响宽度的样式)const cloneDiv = e.target.cloneNode(true);// 移除克隆div的宽度样式,以确保它能根据内容扩展cloneDiv.style.width = "fit-Content"; // 设置克隆元素的宽度为内容宽度cloneDiv.style.visibility = "hidden"; // 隐藏克隆div,避免它影响页面布局cloneDiv.style.position = "absolute"; // 将其定位到页面外,避免滚动条等问题cloneDiv.style.left = "-9999px"; // 将其移动到屏幕外// 将克隆div添加到文档中(为了测量,但不在页面上显示)document.body.appendChild(cloneDiv);// 获取克隆div的宽度,这就是文字所占的宽度const textWidth = cloneDiv.offsetWidth;// 从文档中移除克隆divdocument.body.removeChild(cloneDiv);//  对比div容器的宽度和文本的宽度,如果文本宽度>=容器宽度,则展示tooltipemits("update:disabled", textWidth >= e.target.clientWidth);
};
</script><style lang="scss" scoped>
.ellipsis {width: 100%;overflow: hidden;text-overflow: ellipsis;white-space: nowrap;
}
</style>

相关文章:

vue3二次封装tooltip实现el-table中的show-overflow-tooltip效果

开发过程中遇到需要根据后端返回的数据长度来判断是否需要使用el-tooltip的情况&#xff0c;想到el-table里面就有这种交互效果&#xff0c;如果不论文字是否超出容器长度都展示tooltip的话&#xff0c;交互效果难免会差很多&#xff0c;所以二次封装了这个组件&#xff1a; 给…...

如何创建并保存HTML文件?零基础入门教程

原文&#xff1a;如何创建并保存HTML文件&#xff1f;零基础入门教程 | w3cschool笔记 本文将以Windows系统为例&#xff0c;教你用最简单的记事本创建并保存第一个HTML网页。 &#x1f4dd; 第一步&#xff1a;准备工具 文本编辑器&#xff1a;使用系统自带的记事本&#xff…...

React19源码系列之FiberRoot节点和Fiber节点

在上一篇文章&#xff0c;看了createRoot函数的大致流程。 createContainer函数创建并返回了FiberRoot 。FiberRoot是由createFiberRoot函数创建&#xff0c; createFiberRoot函数还将 FiberRoot和 根Fiber 通过current属性建立起了联系。将FiberRoot作为参数传给 ReactDOMRoo…...

每天看一篇漏洞报告

前言&#xff1a; 内容来源于乌云漏洞 今日思考xss漏洞&#xff0c; 今天看到一篇文章&#xff0c;里面详细说了xss的绕过技巧&#xff0c;虽然时间久了&#xff0c;没有去尝试&#xff0c;待会有时间去测试一下 以下是整理后的文章&#xff0c;原文在下面 文章链接&#…...

采用贝塞尔函数,进行恒定束宽波束形成算法

matlab采用贝塞尔函数&#xff0c;进行恒定束宽波束形成算法 beselle.m , 1452 20191225160928.png , 43700 20191225160935.png , 45238 20191225161010.png , 76862...

TCP协议的多线程应用、多线程下的网络编程

DAY13.2 Java核心基础 多线程下的网络编程 基于单点连接的方式&#xff0c;一个服务端对应一个客户端&#xff0c;实际运行环境中是一个服务端需要对应多个客户端 创建ServerSocketNable类&#xff0c;多线程接收socket对象 public class ServerSocketNable implements Run…...

华为中小型企业项目案例

实验目的(1) 熟悉华为交换机和路由器的应用场景 (2) 掌握华为交换机和路由器的配置方法 实验拓扑实验拓扑如图所示。 华为中小型企业项目案例拓扑图 实验配置市场部和技术部的配置创建VLANLSW1的配置 [LSW1]vlan batch 10 20 [LSW1]q…...

LabVIEW VI Scripting随机数波形图自动生成

通过LabVIEW VI Scripting 技术&#xff0c;实现从零开始编程化创建并运行一个随机数波形监测VI。核心功能包括自动化生成VI框架、添加控件与函数、配置数据流逻辑及界面布局优化&#xff0c;适用于批量生成测试工具、教学模板开发或复杂系统的模块化构建。通过脚本化操作&…...

MATLAB 控制系统设计与仿真 - 26

状态空间控制系统概述 状态空间描述 现代控制理论是建立在状态空间基础上的控制系统分析和设计理论&#xff0c;它用状态变量来刻画系统的内部特征&#xff0c;用‘一节微分方程组’来描述系统的动态特性。系统的状态空间模型描述了系统输入/输出与内部状态之间的关系&#x…...

Python----计算机视觉处理(Opencv:图像镜像旋转)

一、图像镜像旋转 图像的旋转是围绕一个特定点进行的&#xff0c;而图像的镜像旋转则是围绕坐标轴进行的。图像镜像旋转&#xff0c;也可 以叫做图像翻转&#xff0c;分为水平翻转、垂直翻转、水平垂直翻转三种。 通俗的理解为&#xff0c;当以图片的中垂线为x轴和y轴时&#x…...

C++从入门到入土(八)——多态的原理

目录 前言 多态的原理 动态绑定与静态绑定 虚函数表 小结 前言 在前面的文章中&#xff0c;我们介绍了C三大特性之一的多态&#xff0c;我们主要介绍了多态的构成条件&#xff0c;但是对于多态的原理我们探讨的是不够深入的&#xff0c;下面这这一篇文章&#xff0c;我们将…...

国产编辑器EverEdit - 语法着色文件的语法

1 语法着色定义(官方文档) 1.1 概述 EverEdit有着优异的语法着色引擎&#xff0c;可以高亮现存的绝大多数的编程语言。在EverEdit的语法着色中有Region和Item两个概念&#xff0c;Region表示着不同的区块。而Item则代表着这些区块中不同的部分。一般情况下&#xff0c;Region…...

vue3当中使用Pinia的store的组件化开发模式

一、安装与初始化 安装Pinia npm install pinia # 或 yarn add pinia目的&#xff1a;引入Pinia核心库&#xff0c;为状态管理提供基础支持。 挂载Pinia实例 在main.js中初始化并注入Vue应用&#xff1a; import { createApp } from vue import { createPinia } from pinia i…...

PyCharm安装redis,python安装redis,PyCharm使用失败问题

报错信息 Usage: D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip install [options] [package-index-options] … D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip install [options] -r [package-index-options] … D:\wb2\wbrj_pys\venv\Scripts\python.exe -m pip instal…...

保姆级离线TiDB V8+解释

以前学习的时候还是3版本&#xff0c;如今已经是8版本了 https://cn.pingcap.com/product-community/?_gl1ujh2l9_gcl_auMTI3MTI3NTM3NC4xNzM5MjU3ODE2_gaMTYwNzE2NTI4OC4xNzMzOTA1MjUz_ga_3JVXJ41175MTc0MTk1NTc1OC4xMS4xLjE3NDE5NTU3NjIuNTYuMC41NDk4MTMxNTM._ga_CPG2VW1Y4…...

PyTorch 深度学习实战(17):Asynchronous Advantage Actor-Critic (A3C) 算法与并行训练

在上一篇文章中&#xff0c;我们深入探讨了 Soft Actor-Critic (SAC) 算法及其在平衡探索与利用方面的优势。本文将介绍强化学习领域的重要里程碑——Asynchronous Advantage Actor-Critic (A3C) 算法&#xff0c;并展示如何利用 PyTorch 实现并行化训练来加速学习过程。 一、A…...

【服务器知识】Nginx路由匹配规则说明

Nginx路由匹配规则说明 **一、Nginx路由匹配核心机制****二、匹配规则语法详解**1. **精确匹配 ()**2. **前缀匹配 (^~ 或 /)**3. **正则匹配 (~ 或 ~*)**4. **通配符匹配 (*)** **三、路由匹配优先级顺序****四、高级路由技巧**1. **条件判断 (if语句)**2. **路径重写 (rewrit…...

Docker换源加速(更换镜像源)详细教程(2025.3最新可用镜像,全网最详细)

文章目录 前言可用镜像源汇总换源方法1-临时换源换源方法2-永久换源&#xff08;推荐&#xff09;常见问题及对应解决方案1.换源后&#xff0c;可以成功pull&#xff0c;但是search会出错 补充1.如何测试镜像源是否可用2.Docker内的Linux换源教程 换源速通版&#xff08;可以直…...

OpenAI--Agent SDK简介

项目概述 OpenAI Agents SDK 是一个轻量级但功能强大的框架&#xff0c;用于构建多智能体工作流。它主要利用大语言模型&#xff08;LLM&#xff09;&#xff0c;通过配置智能体、交接、护栏和跟踪等功能&#xff0c;实现复杂的工作流管理。以下是对其各个部分运行过程和代码流…...

pytorch小记(十三):pytorch中`nn.ModuleList` 详解

pytorch小记&#xff08;十三&#xff09;&#xff1a;pytorch中nn.ModuleList 详解 PyTorch 中的 nn.ModuleList 详解1. 什么是 nn.ModuleList&#xff1f;2. 为什么不直接使用普通的 Python 列表&#xff1f;3. nn.ModuleList 的基本用法示例&#xff1a;构建一个包含两层全连…...

SpringData Redis:RedisTemplate配置与数据操作

文章目录 引言一、Redis概述与环境准备二、RedisTemplate基础配置三、连接属性配置四、操作String类型数据五、操作Hash类型数据六、操作List类型数据七、操作Set类型数据八、操作ZSet类型数据九、事务与管道操作总结 引言 Redis作为高性能的NoSQL数据库&#xff0c;在分布式系…...

Qt按钮控件常用的API

1.创建按钮 QPushButton *btnnew QPushButton; 以顶层方式弹出窗口控件 代码&#xff1a; #include "widget.h" #include "ui_widget.h" #include"QPushButton"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui-&…...

如何检查CMS建站系统的插件是否安全?

检查好CMS建站系统的插件安全是确保网站安全的重要环节&#xff0c;对于常见的安全检查&#xff0c;大家可以利用以下几种有效的方法和工具&#xff0c;来帮你评估插件的安全性。 1. 检查插件来源和开发者信誉 选择可信来源&#xff1a;仅从官方插件库或可信的第三方开发者处…...

修改HuggingFace模型默认缓存路径

huggingface模型的默认缓存路径是~/.cache/huggingface/hub/ 通常修改为自己的路径会更为方便。 方式一&#xff1a;cache_dir 参数 可以通过from_pretrained函数中的 cache_dir 参数来指定&#xff0c;缺点&#xff0c;每次都需要手动指定&#xff0c;比较麻烦。 如&#x…...

ORA-12541: TNS:no listener

问题描述&#xff1a;使用 PL/SQL Developer 连接数据库时出现ORA-12541错误。 1.查询监听状态 [oraclelocalhost admin]$ lsnrctl statusLSNRCTL for Linux: Version 19.0.0.0.0 - Production on 15-MAR-2025 10:47:57Copyright (c) 1991, 2021, Oracle. All rights reserv…...

【Matlab GUI】封装matlab GUI为exe文件

注&#xff1a;封装后的exe还是需要有matlab环境才能运行 &#xff08;1&#xff09;安装MCRinstaller.exe文件&#xff0c;在matlab安装目录下的toolbox/compiler/deploy/win64文件夹里 &#xff08;2&#xff09;安装完MCRinstaller.exe&#xff0c;字命令窗口输入&#x…...

【eNSP实战】(续)一个AC多个VAP的实现—将隧道转发改成直接转发

在 一个AC多个VAP的实现—CAPWAP隧道转发 此篇文章配置的基础上&#xff0c;将隧道转发改成直接转发 一、改成直接转发需要改动的配置 &#xff08;一&#xff09;将连接AP的接口改成trunk口&#xff0c;并允许vlan100、101、102通过 [AC1]interface GigabitEthernet 0/0/8 …...

Redis能否替代MySQL作为主数据库?深入解析两者的持久化差异与适用边界——基于AOF持久化与关系型数据库的对比

一、Redis的持久化机制与可靠性分析 ​AOF持久化原理与策略 Redis的AOF&#xff08;Append Only File&#xff09;通过记录所有写操作命令实现持久化&#xff0c;支持三种策略&#xff1a; ​**always模式**&#xff1a;每条命令执行后立即同步到磁盘&#xff0c;理论上数据丢失…...

机器人ROS学习:Ubuntu22.04安装ROS2和Moveit2实现运动规划

通过本篇文章学习&#xff0c;你可以收获以下内容&#xff1a; 学会在 Ubuntu22.04 上安装 Moveit2学会下载编译运行 Moveit2 样例程序学会使用样例程序进行运动规划等 版本平台 系统版本&#xff1a;ubuntu22.04ROS2 版本&#xff1a;humbleMoveit 版本&#xff1a;moveit2…...

GIT标签(Tag)操作

在Git中&#xff0c;标签&#xff08;Tag&#xff09;用于标记特定的提交点&#xff0c;通常用于发布版本。 切换到需要打标签的分支&#xff1a; git checkout <branch-name>创建标签 git tag v1.0.0 git tag -a v1.0.0 -m "Release version 1.0.0"查看所…...