title属性样式不可调整 ,element-toolTip组件在有些情况下无法使用(比如swiper 无限滚动时)

写一个全局监听方法

js 复制代码
const parentDom = document.body
mounted() {
    document.body.addEventListener('mouseover', this.handleOver)
    // document.body.addEventListener('mouseleave', this.removeDom)
  },
  methods: {
    handleOver(e){
      var target = e.target;
      target.removeEventListener('mouseleave', this.removeDom)
      if (target.getAttribute('tooltip')) {
        // const parentDom = document.body
        // const parentDom = document.querySelector('#dv-full-screen-container')
        let tooltipText = target.getAttribute('tooltip'); //  获取当前所需文本
        // console.log(target)
        // 在此处编写点击事件处理逻辑
        const curStyle = window.getComputedStyle(target, '');
        // 获取当前hover元素的宽高和位置 用来确定 弹窗的位置
        let targetObj = target.getBoundingClientRect()
        console.log(targetObj)
        console.log(targetObj.top);
        // console.log(curStyle.width)
        // console.log(curStyle.height)

        const tooltip = document.createElement('div');
        tooltip.className = 'tooltipCls';
        tooltip.innerHTML = tooltipText;
        parentDom.appendChild(tooltip);
        tooltip.style.cssText = `
          display: inline-block;
          max-width: 500px;
	        max-height: 400px;
          position: fixed;
	        top: ${targetObj.top - 10}px;
          left: ${targetObj.left + (parseFloat(targetObj.width) / 2)}px;
          padding: 10px;
          overflow: auto;
          font-size: 14px;
	        color: #fff;
	        background: rgba(0, 0 , 0, .8);
	        border-radius: 5px;
	        z-index: 19999;
          transform: translate(-50%, -100%);
	      `;
        target.addEventListener('mouseleave', this.removeDom)
      }
    },
    removeDom({target}){
      // console.log(target)
      if (target.getAttribute('tooltip')) {
        setTimeout(() => {
          const tooltip = document.querySelector('.tooltipCls')
          // console.log(tooltip)
          tooltip && parentDom.removeChild(tooltip);
        }, 100);
      }
    }

  },
  beforeDestroy() {
    document.body.removeEventListener('mouseover', this.handleOver)
    document.body.removeEventListener('mouseleave', this.removeDom)
  }
相关推荐
gs8014021 分钟前
解构 Cordis:面向“时空可组合性”的 TypeScript 元框架深度剖析
前端·javascript·typescript
Highcharts.js41 分钟前
Highcharts大数据渲染模块Boost实战与参数最佳实践表
javascript·数据可视化·boost·highcharts·大数据渲染·加速配置·参数表
岁岁种桃花儿1 小时前
Vue核心语法第一篇:Vue是什么?
前端·javascript·vue.js
Highcharts.js1 小时前
数据可视化避坑指南 ——开发中常见图表错误与修复方案
javascript·信息可视化·数据可视化·highcharts·数据可视化避坑·修复方案
观无2 小时前
若依EasyExcel实现单元格合并
开发语言·前端·javascript
愚公搬代码2 小时前
【愚公系列】《Web应用安全》001-VMware的安装
前端·安全
xiaohaiAIgeo2 小时前
【2026年】HG/T 20656-2024化工暖通空调设计规范:新版标准的变化与影响
java·前端·javascript·科普知识
立少→万能汉编2 小时前
用“立少→超文本”写静态网页,标签<倍>
服务器·前端·javascript
weixin_431600442 小时前
NestJS 入门(7):生命周期钩子——构造函数和 `OnModuleInit` 差在哪?
前端·后端·学习·node.js·nest.js
你挚爱的强哥3 小时前
【chromeDownload】自定义组件:多用于登录框底部提供下载Chrome谷歌浏览器的链接
前端·vue.js·chrome