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

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 } = row
  const 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 = value
  tooltipDom.setAttribute('id', `tooltip-${id}`)
  // 将浮层插入到body中
  document.body.appendChild(tooltipDom)
}

// 删除tooltip
export function removeTips(row:any) {
  const { id } = row
  const tooltipDomLeave = document.querySelectorAll(`#tooltip-${id}`)
  if (tooltipDomLeave.length) {
    tooltipDomLeave.forEach(dom => {
      document.body.removeChild(dom)
    })
  }


http://www.kler.cn/news/107712.html

相关文章:

  • 【Docker】Docker学习之一:离线安装Docker步骤
  • 在类库中使用ASP.NET Core API
  • jvm关闭时的钩子函数
  • 【PythonGIS】基于高德Api实现批量地址查询经纬度
  • 椭圆曲线点加的应用计算
  • Cookie技术
  • Notepad++安装插件和配置快捷键
  • 雨云OSS服务介绍和使用教程,以及Chevereto图床使用雨云OSS的教程
  • 11月14号|Move生态Meetup相约浪漫土耳其
  • node.js - 上传文件至阿里云oss
  • 如何快速排查SSD IO延迟抖动问题?
  • 信钰证券:华为汽车概念股持续活跃 圣龙股份斩获12连板
  • 汇编运算符和表达式
  • 如何使用gpt提高效率
  • 【每日一题】合并两个有序数组
  • 持续集成部署-k8s-服务发现-Ingress
  • vue 无限滚动插件 vue-seamless-scroll
  • 高级深入--day39
  • react关于类组件this指向
  • UML中类之间的六种主要关系
  • 【2023.10.27练习】C语言-字符串转换
  • exFAT文件系统的目录与文件存储
  • 京东平台数据分析(京东销量):2023年9月京东吸尘器行业品牌销售排行榜
  • 抢占式调度是如何发生的
  • 大厂面试题-JVM为什么使用元空间替换了永久代?
  • Spring Cloud Gateway + Knife4j 4.3 实现微服务网关聚合接口文档
  • golang工程——grpc-gateway 转发http header中自定义字段到grpc上下文元数据
  • 原始流,缓冲流性能比较
  • 淘宝API接口获取商品信息,订单管理,库存管理,数据分析
  • 计算机网络重点概念整理-第七章 网络安全【期末复习|考研复习】