基于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 相关文章推荐
Firefox+FireBug使JQuery的学习更加轻松愉快
Jan 01 Javascript
javascript作用域容易记错的两个地方分析
Jun 22 Javascript
javascript将数字转换整数金额大写的方法
Jan 27 Javascript
javascript实现鼠标移到Image上方时显示文字效果的方法
Aug 07 Javascript
分享自己用JS做的扫雷小游戏
Feb 17 Javascript
jQuery获取父元素及父节点的方法小结
Apr 14 Javascript
JavaScript数据结构之二叉查找树的定义与表示方法
Apr 12 Javascript
vue+php实现的微博留言功能示例
Mar 16 Javascript
详解element-ui设置下拉选择切换必填和非必填
Jun 17 Javascript
小程序调用微信支付的方法
Sep 26 Javascript
Node.js API详解之 vm模块用法实例分析
May 27 Javascript
React-vscode使用jsx语法的问题及解决方法
Jun 21 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
数据库中排序的对比及使用条件详解
2012/02/23 PHP
php curl模拟post请求小实例
2013/11/13 PHP
PHP 生成N个不重复的随机数
2015/01/21 PHP
php生成高清缩略图实例详解
2015/12/07 PHP
基于Laravel(5.4版本)的基本增删改查操作方法
2019/10/11 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
JavaScript 学习笔记二 字符串拼接
2010/03/28 Javascript
Textarea根据内容自适应高度
2013/10/28 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
JavaScript按值删除数组元素的方法
2015/04/24 Javascript
javascript随机显示背景图片的方法
2015/06/18 Javascript
详细谈谈javascript的对象
2016/07/31 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
vue-lazyload图片延迟加载插件的实例讲解
2018/02/09 Javascript
vue中datepicker的使用教程实例代码详解
2019/07/08 Javascript
JS实现的碰撞检测与周期移动完整示例
2019/09/02 Javascript
解决layui-table单元格设置为百分比在ie8下不能自适应的问题
2019/09/28 Javascript
jQuery实现图片随机切换、抽奖功能(实例代码)
2019/10/23 jQuery
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
Python中pygame安装方法图文详解
2015/11/11 Python
Python实现的计数排序算法示例
2017/11/29 Python
python 字典有序并写入json文件过程解析
2019/09/30 Python
python调用私有属性的方法总结
2020/07/24 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
Python接口自动化测试框架运行原理及流程
2020/11/30 Python
大学毕业登记表自我鉴定
2013/10/09 职场文书
咨询公司各岗位职责
2013/12/02 职场文书
《蒲公英》教学反思
2014/02/28 职场文书
婚纱摄影师求职信
2014/03/07 职场文书
公司户外活动总结
2014/07/04 职场文书
社区活动总结范文
2015/05/07 职场文书
小学生教师节广播稿
2015/08/19 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL