基于vue中对鼠标划过事件的处理方式详解


Posted in Javascript onAugust 22, 2018

鼠标事件进行监听

需求中,在一个table(组件)表中,对于其中一列(该列为图片列),当鼠标划过该列的某个单元格子(图片)时,需要展示出该单元格子对应的遮罩层

翻阅了一些博客,发现好多都提到了mouse事件,如mouseover、mouseout、mouseenter、mouseleave,在之后我自己也通过这种方法进行了尝试。

<template>
 <el-table
 :data="tableData"
 stripe
 style="width: 100%">
 <el-table-column
  prop="pic"
  label="图片"
  width="180">
  <template slot-scope="scope">
   <div slot="wrapper" class="name-wrapper">
   <div class="img-mask" @click="toShowDialog(props.row)" :ref="'mask' + props.rowIndex">文字</div>
   <div @mouseover="changeMask(props.rowIndex)" @mouseout="changeMask(props.rowIndex)">
    <img src="...">
   </div>
   </div>
  </template>
 </el-table-column>
 </el-table>
</template>

...
changeMask(index) {
 let vm = this;
 let mask = vm.$refs['mask' + index];

 if(mask.style.display == 'none') {
 mask.style.display = 'block';
 }else {
 mask.style.display = 'none';
 }
}

最后在查看结果中发现,在划过的时候是会触发鼠标事件,但是会出现闪动的清空,当鼠标一直放在该单元格上的时候,遮罩层也会消失和出现反复切换。为缓解这种情况,还对changeMask中的显示和隐藏进行setTimeout延时,结果并不理想,不推荐这样使用。

CSS方式实现

这种方法,只需要保留上面代码中的主体部分,不需要ref和mouse事件这些,主要是通过opacity去控制遮罩层的显示和隐藏的。具体的样式代码如下:

.wrapper {
 position: relative;
 .img-mask {
 position: absolute;
 background: rgba(0, 0, 0, 0.5);
 z-index: 10;
 //设置left、right、top、bottom的原因是使得遮罩层上的文字显示在该层的最中间
 left: 0;
 right: 0;
 top: 0;
 bottom: 0;
 //透明度为0,则就是不可见
 opacity: 0;
 }
 &:hover {
 .img-mask {
  opacity: 1;
 }
 }
}

这种方法达到了预期的效果,体验也很好,推荐使用。

table中动态ref

首先,这部分并不是针对遮罩层显示隐藏的,而是处理表格中某一列或者很多单元格添加ref的。这个其实在第一种方法中就已经也出来了,现在做下总结。

:ref="'mask' + props.rowIndex"这种方法对例如表格这样一列中的每个单元格都对应着一个附加的东西,而这些东西的位置又是不同的,可以实现对每个单元格进行ref绑定,在事件处理函数中,通过传递props.rowIndex得到下标,最终通过this.$ref['mask' + props.rowIndex]得到对应的元素,然后对其css进行相关控制(只是举例)。

拓展知识:vue鼠标划过移入移出触发函数介绍

如下所示:

<ul>>
 <li class="" v-on:mouseover="changeActive($event)" v-on:mouseout="removeActive($event)"></li>
</ul>
methods:{
  // 鼠标移入加入class
  changeActive($event){
    $event.currentTarget.className="active";
  },
  removeActive($event){
    $event.currentTarget.className="";
  }
}

以上这篇基于vue中对鼠标划过事件的处理方式详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JavaScript闭包 懂不懂由你反正我是懂了
Oct 21 Javascript
jQuery操作元素css样式的三种方法
Jun 04 Javascript
TypeScript具有的几个不同特质
Apr 07 Javascript
基于JavaScript怎么实现让歌词滚动播放
Nov 03 Javascript
JS获取文件大小方法小结
Dec 08 Javascript
JavaScript原型及原型链终极详解
Jan 04 Javascript
又一款js时钟!transform实现时钟效果
Aug 15 Javascript
如何在Angular.JS中接收并下载PDF
Nov 26 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
Aug 09 jQuery
webpack 静态资源集中输出的方法示例
Nov 09 Javascript
利用React Router4实现的服务端直出渲染(SSR)
Jan 07 Javascript
js实现简单掷骰子效果
Oct 24 Javascript
vue鼠标移入添加class样式,鼠标移出去除样式(active)实现方法
Aug 22 #Javascript
JS封装的模仿qq右下角消息弹窗功能示例
Aug 22 #Javascript
当vue路由变化时,改变导航栏的样式方法
Aug 22 #Javascript
element-ui 设置菜单栏展开的方法
Aug 22 #Javascript
详解vue-cli脚手架中webpack配置方法
Aug 22 #Javascript
element-ui使用导航栏跳转路由的用法详解
Aug 22 #Javascript
详解微信小程序canvas圆角矩形的绘制的方法
Aug 22 #Javascript
You might like
咖啡豆分级制度 咖啡豆等级分类 咖啡豆是按口感分类的吗?
2021/03/05 新手入门
php为什么选mysql作为数据库? Mysql 创建用户方法
2007/07/02 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
2017/12/21 PHP
ExtJS 简介 让你知道extjs是什么
2008/12/29 Javascript
关于javascript中this关键字(翻译+自我理解)
2010/10/20 Javascript
jQueryUI写一个调整分类的拖放效果实现代码
2012/05/10 Javascript
鼠标经过显示二级菜单js特效
2013/08/13 Javascript
JQuery的$命名冲突详细解析
2013/12/28 Javascript
jquery删除提示框弹出是否删除对话框
2014/01/07 Javascript
调用innerHTML之后onclick失效问题的解决方法
2014/01/28 Javascript
【JS+CSS3】实现带预览图幻灯片效果的示例代码
2016/03/17 Javascript
深入理解Javascript中的自执行匿名函数
2016/06/03 Javascript
Three.js利用顶点绘制立方体的方法详解
2017/09/27 Javascript
JS计算距当前时间的时间差实例
2017/12/29 Javascript
JavaScript实现的贝塞尔曲线算法简单示例
2018/01/30 Javascript
Vue中this.$router.push参数获取方法
2018/02/27 Javascript
layui 对table中的数据进行转义的实例
2019/09/12 Javascript
layer弹出框确定前验证:弹出消息框的方法(弹出两个layer)
2019/09/21 Javascript
解决vue单页面应用打包后相对路径、绝对路径相关问题
2020/08/14 Javascript
pygame学习笔记(5):游戏精灵
2015/04/15 Python
图解Python变量与赋值
2018/04/03 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
python+Django实现防止SQL注入的办法
2019/10/31 Python
Python实现中值滤波去噪方式
2019/12/18 Python
Python3 搭建Qt5 环境的方法示例
2020/07/16 Python
python em算法的实现
2020/10/03 Python
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
计算机专业推荐信范文
2013/11/20 职场文书
求职信模版
2013/11/30 职场文书
幼儿教师考核制度
2014/01/25 职场文书
中学生家长评语大全
2014/04/16 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
反腐倡廉主题教育活动总结
2015/05/07 职场文书
2015年物业公司保洁工作总结
2015/10/22 职场文书
2016年党员创先争优承诺书
2016/03/25 职场文书
HTML基础详解(上)
2021/10/16 HTML / CSS