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

elementUI el-table实现鼠标悬浮某一行,在鼠标右侧展示提示信息

背景

el-table组件中,可以通过勾选某条数据来创建单据,但是有些数据没有权限使用,就需要禁用掉勾选的功能,然后当鼠标悬浮在这一行的时候,展示类似于toolTip的提示框。

除了当鼠标悬浮在某一行,展示类似于toolTip的提示框这一条el-table是没有提供配置项的,其他的都能够通过配置完成,那我们接下来看看如何实现鼠标悬浮某一行展示提示框的需求。

实现效果

在这里插入图片描述

具体实现

首先el-table有提供两个事件cell-mouse-enter和cell-mouse-leave,这两个事件分别在当单元格 hover 进入时以及当单元格 hover 退出时会触发,回调函数中能接收四个参数:row, column, cell, event。
我们可以通过cell-mouse-enter事件,在鼠标进入到当前行的时候,根据第一个参数row判断当前行是否需要进行提示。如果需要提示的话,我们可以获取第四个参数event,拿到当前触发hover事件的dom元素。然后动态生成一个提示框div定位到鼠标右侧,插入到body中。
然后通过监听cell-mouse-leave事件将这个元素从body中移除。

代码如下

// table组件
<el-table :data="tableData" style="width: 100%"@cell-mouse-enter="enterSelectionRows"@cell-mouse-leave="leaveSelectionRows"
>// ......
</el-table>
// 鼠标进入表格行的回调函数
enterSelectionRows: (row:any, column:any, cell:any, event:any) => {if (!row.hasAuth) {createTips(event, row, '请先在资产平台申请对应表查询权限')return}}
// 鼠标离开表格行的回调函数
leaveSelectionRows: (row:any) => {removeTips(row)
}// 创建toolTip
export function createTips(el:any, row:any, value:any) {const { id } = rowconst tooltipDom = document.createElement('div')tooltipDom.style.cssText = `display: inline-block;max-width: 400px;max-height: 400px;position: absolute;top: ${el.clientY + 5}px;left: ${el.clientX}px;padding:5px 10px;overflow: auto;font-size: 12px;font-family: PingFangSC-Regular, PingFang SC;font-weight: 400;color: #595959;background: #fff;border-radius: 5px;z-index: 19999;box-shadow: 0 4px 12px 1px #ccc;`tooltipDom.innerHTML = valuetooltipDom.setAttribute('id', `tooltip-${id}`)// 将浮层插入到body中document.body.appendChild(tooltipDom)
}// 删除tooltip
export function removeTips(row:any) {const { id } = rowconst tooltipDomLeave = document.querySelectorAll(`#tooltip-${id}`)if (tooltipDomLeave.length) {tooltipDomLeave.forEach(dom => {document.body.removeChild(dom)})}
http://www.lryc.cn/news/209749.html

相关文章:

  • Java 使用 poi 和 aspose 实现 word 模板数据写入并转换 pdf 增加水印
  • Spring Boot进阶(93):体验式教程:手把手教你整合Spring Boot和Zipkin
  • Lvs +keepalivede : 高可用集群
  • 得物 Redis 设计与实践yu
  • 优咔科技创新连接方案助力高质量5G车联服务
  • (a /b)*c的值
  • Hive 常用DML操作
  • centos部署tomcat
  • 【Spark】配置参数关系-重要
  • [Qt之“MMM dd yyyyhh:mm:ss“]时间格式
  • SSM宾馆客房管理系统开发mysql数据库web结构java编程计算机网页源码eclipse项目
  • 永远在路上
  • JS递归函数详解
  • JS问题:如何实现文本一键复制和长按复制功能?
  • react实现步进器
  • 【jenkins】centos7在线安装jenkins
  • Hive常用DDL操作
  • 关于css中设置变量用于全局Css或者Js中使用
  • Elasticsearch(十五)搜索---搜索匹配功能⑥--基于地理位置查询
  • 为什么axios会有params和data两个参数
  • Vite+Vue3项目全局引入scss文件
  • android10.0(Q) MTK 6765 user版本打开root权限
  • 软考 系统架构设计师系列知识点之设计模式(9)
  • LeetCode二分查找
  • 米软科技客户单病种上报量云南省第一
  • SpringCore完整学习教程5,入门级别
  • 1024 云上见 · 上云挑战(ChatGPT搭建)
  • Linux内核代码中常用的数据结构
  • 自动驾驶,从“宠儿”走进“淘汰赛”
  • Tensorflow2 中模型训练标签顺序和预测结果标签顺序不一致问题解决办法