Vue.js鼠标悬浮更换图片功能


Posted in Javascript onMay 17, 2017

最近自己做的项目中设计师要求分类栏中鼠标悬停更换图片,大致实现出来的效果就是这样:

Vue.js鼠标悬浮更换图片功能

这个在jQuery中是个很简单的事,但是在vue中我还是第一次实现。

首先将所有的选中后图片都覆盖到没选中图片上

html代码如下

<ul>
  <li>
  <a href="">
  <img src="../../../img/goods/study.png" alt="学习">
  <img class="hide_tab" src="../../../img/goods/study_1.png" alt="学习">
  </a>
  </li>
  <li>
  <a href="">
  <img src="../../../img/goods/life.png" alt="生活">
  <img class="hide_tab" src="../../../img/goods/life_1.png" alt="生活">
  </a>
  </li>
  <li>
  <a href="" >
  <img src="../../../img/goods/sport.png" alt="运动">
  <img class="hide_tab" src="../../../img/goods/sport_1.png" alt="运动">
  </a>
  </li>
  <li>
  <a href="">
  <img src="../../../img/goods/clothes.png" alt="服饰">
  <img class="hide_tab" src="../../../img/goods/clothes_1.png" alt="服饰">
  </a>
  </li>
  <li>
  <a href="" >
  <img src="../../../img/goods/hat.png" alt="鞋帽">
  <imgclass="hide_tab" src="../../../img/goods/hat_1.png" alt="鞋帽">
  </a>
  </li>
  <li>
  <a href="" >
  <img src="../../../img/goods/food.png" alt="食品">
  <img class="hide_tab" src="../../../img/goods/food_1.png" alt="食品">
  </a>
  </li>
  <li>
  <a href="">
  <img src="../../../img/goods/other.png" alt="其他">
  <img class="hide_tab" src="../../../img/goods/other_1.png" alt="其他">
  </a>
  </li>
 </ul>

css代码如下

.right {
 float: left;
 ul {
 margin-left: 1px;
 li {
  display: inline-block;
  margin-left: 12px;
  width: 100px;
  height: 100px;
  a{
  position: relative;
  display: inline-block;
  width: 100px;
  height: 100px;
  .hide_tab{
  position: absolute;
  bottom: 0;
  }
  }
 }
 }
 }

其实就是很简单的通过position:absolute进行了布局,现在选中样式的图片已经全部覆盖到了没有选中样式图片之上了。

接下来就需要一个变量控制他们的显隐。这个变量应该是一个和每个分类一一对应的,那这个变量就不应该是一个简单的布尔值,而是一个数字,和每个分类图片对应。

我定义这个变量叫做active,在data中声明

data(){
 return{
 active: 0
 }
}

再定义一个方法控制active变量的变化

showActive(index) {
 this.active = index;
}

方法中的index参数就是鼠标悬浮时传入的值

修改html代码如下

<ul>
  <li>
  <a href="" @mouseenter="showActive(1)" @mouseleave="showActive(0)">
  <img src="../../../img/goods/study.png" alt="学习">
  <img v-show="active === 1" class="hide_tab" src="../../../img/goods/study_1.png" alt="学习">
  </a>
  </li>
  <li>
  <a href="" @mouseenter="showActive(2)" @mouseleave="showActive(0)">
  <img src="../../../img/goods/life.png" alt="生活">
  <img v-show="active === 2" class="hide_tab" src="../../../img/goods/life_1.png" alt="生活">
  </a>
  </li>
  <li>
  <a href="" @mouseenter="showActive(3)" @mouseleave="showActive(0)">
  <img src="../../../img/goods/sport.png" alt="运动">
  <img v-show="active === 3" class="hide_tab" src="../../../img/goods/sport_1.png" alt="运动">
  </a>
  </li>
  <li>
  <a href="" @mouseenter="showActive(4)" @mouseleave="showActive(0)">
  <img src="../../../img/goods/clothes.png" alt="服饰">
  <img v-show="active === 4" class="hide_tab" src="../../../img/goods/clothes_1.png" alt="服饰">
  </a>
  </li>
  <li>
  <a href="" @mouseenter="showActive(5)" @mouseleave="showActive(0)">
  <img src="../../../img/goods/hat.png" alt="鞋帽">
  <img v-show="active === 5" class="hide_tab" src="../../../img/goods/hat_1.png" alt="鞋帽">
  </a>
  </li>
  <li>
  <a href="" @mouseenter="showActive(6)" @mouseleave="showActive(0)">
  <img src="../../../img/goods/food.png" alt="食品">
  <img v-show="active === 6" class="hide_tab" src="../../../img/goods/food_1.png" alt="食品">
  </a>
  </li>
  <li>
  <a href="" @mouseenter="showActive(7)" @mouseleave="showActive(0)">
  <img src="../../../img/goods/other.png" alt="其他">
  <img v-show="active === 7" class="hide_tab" src="../../../img/goods/other_1.png" alt="其他">
  </a>
  </li>
 </ul>

只有在当前index和active相等时,才会显示已选中分类的图片。

而鼠标离开时,传入一个没有与之对应的0,这样就没有显示了。

本文已被整理到了《Vue.js前端组件学习教程》,欢迎大家学习阅读。

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
表单(FORM)的一些实用效果代码
Mar 25 Javascript
jQuery中的.bind()、.live()和.delegate()之间区别分析
Jun 08 Javascript
JQuery的read函数与js的onload不同方式实现
Mar 18 Javascript
在JavaScript应用中实现延迟加载的方法
Jun 25 Javascript
Jquery全选与反选点击执行一次的解决方案
Aug 14 Javascript
jQuery插件实现静态HTML验证码校验
Nov 06 Javascript
利用js判断手机是否安装某个app的多种方案
Feb 13 Javascript
jQuery使用unlock.js插件实现滑动解锁
Apr 04 jQuery
bootstrap multiselect 多选功能实现方法
Jun 05 Javascript
JavaScript 正则命名分组【推荐】
Jun 07 Javascript
Vue.js 十五分钟入门图文教程
Sep 12 Javascript
JS合并两个数组的3种方法详解
Oct 24 Javascript
12个非常有用的JavaScript技巧
May 17 #Javascript
Javascript中的async awai的用法
May 17 #Javascript
ES6入门教程之Iterator与for...of循环详解
May 17 #Javascript
angular.fromJson与toJson方法用法示例
May 17 #Javascript
Node.js编写CLI的实例详解
May 17 #Javascript
ES6入门教程之Class和Module详解
May 17 #Javascript
AngularJS实现动态添加Option的方法
May 17 #Javascript
You might like
PHP实现手机归属地查询API接口实现代码
2012/08/27 PHP
ThinkPHP模板判断输出Defined标签用法详解
2014/06/30 PHP
html静态页面调用php文件的方法
2014/11/13 PHP
ThinkPHP3.2.3实现分页的方法详解
2016/06/03 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
2017/02/15 PHP
Thinkphp通过一个入口文件如何区分移动端和PC端
2017/04/18 PHP
PHP实现简单日历类编写
2020/08/28 PHP
Google Map V3 绑定气泡窗口(infowindow)Dom事件实现代码
2013/04/26 Javascript
Jquery代码实现图片轮播效果(一)
2015/08/12 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
Javascript动画效果(1)
2016/10/11 Javascript
探究react-native 源码的图片缓存问题
2017/08/24 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
vue 项目 iOS WKWebView 加载
2019/04/17 Javascript
weui中的picker使用js进行动态绑定数据问题
2019/11/06 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
2020/03/25 Javascript
Vue 事件的$event参数=事件的值案例
2021/01/29 Vue.js
[00:35]2016完美“圣”典风云人物:冷冷宣传片
2016/12/08 DOTA
简单使用Python自动生成文章
2014/12/25 Python
Python中使用PyQt把网页转换成PDF操作代码实例
2015/04/23 Python
在CentOS6上安装Python2.7的解决方法
2018/01/09 Python
PyQt5每天必学之创建窗口居中效果
2018/04/19 Python
深入浅析python 中的匿名函数
2018/05/21 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
python代码能做成软件吗
2020/07/24 Python
如果NULL和0作为空指针常数是等价的,那我到底该用哪一个
2014/09/16 面试题
机械制造与自动化应届生求职信
2013/11/16 职场文书
诚信承诺书范文
2014/03/27 职场文书
单位委托书范本
2014/04/04 职场文书
入党积极分子十八届四中全会思想汇报
2014/10/23 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
清明祭英烈活动总结
2015/05/11 职场文书
父母教会我观后感
2015/06/17 职场文书
幼儿园庆六一主持词
2015/06/30 职场文书
Redis6.0搭建集群Redis-cluster的方法
2021/05/08 Redis
教你一步步实现一个简易promise
2021/11/02 Javascript