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 相关文章推荐
document.designMode的功能与使用方法介绍
Nov 22 Javascript
JavaScript在IE中“意外地调用了方法或属性访问”
Nov 19 Javascript
aspx中利用js实现确认删除代码
Jul 22 Javascript
node.js中的url.parse方法使用说明
Dec 10 Javascript
《JavaScript函数式编程》读后感
Aug 07 Javascript
基于JS实现简单的样式切换效果代码
Sep 04 Javascript
Avalon中文长字符截取、关键字符隐藏、自定义过滤器
May 18 Javascript
一个简单不报错的summernote 图片上传案例
Jul 11 Javascript
jQuery获取所有父级元素及同级元素及子元素的方法(推荐)
Jan 21 jQuery
基于vue.js实现的分页
Mar 13 Javascript
js get和post请求实现代码解析
Feb 06 Javascript
JS class语法糖的深入剖析
Jul 07 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
第八节--访问方式
2006/11/16 PHP
详解php的魔术方法__get()和__set()使用介绍
2012/09/19 PHP
php实现读取内存顺序号
2015/03/29 PHP
微信JSSDK分享功能图文实例详解
2019/04/08 PHP
PHP实现倒计时功能
2020/11/16 PHP
js小技巧--自动隐藏红叉叉
2007/08/13 Javascript
js 实现在离开页面时提醒未保存的信息(减少用户重复操作)
2013/01/16 Javascript
javascript中的document.open()方法使用介绍
2013/10/09 Javascript
二叉树先序遍历的非递归算法具体实现
2014/01/09 Javascript
纯js实现重发验证码按钮倒数功能
2015/04/21 Javascript
js实现按钮颜色渐变动画效果
2015/08/20 Javascript
jquery-mobile基础属性与用法详解
2016/11/23 Javascript
JS实现页面跳转参数不丢失的方法
2016/11/28 Javascript
在vue中给列表中的奇数行添加class的实现方法
2018/09/05 Javascript
vue中,在本地缓存中读写数据的方法
2018/09/21 Javascript
Nodejs让异步变成同步的方法
2019/03/02 NodeJs
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
vue 表单输入框不支持focus及blur事件的解决方案
2020/11/17 Vue.js
jQuery实现简单轮播图效果
2020/12/27 jQuery
python3实现多线程聊天室
2018/12/12 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
对python_discover方法遍历所有执行的用例详解
2019/02/13 Python
pytorch实现Tensor变量之间的转换
2020/02/17 Python
Django使用django-simple-captcha做验证码的实现示例
2021/01/07 Python
全网最详细的PyCharm+Anaconda的安装过程图解
2021/01/25 Python
在Pycharm中安装Pandas库方法(简单易懂)
2021/02/20 Python
amazeui树节点自动展开折叠面板并选中第一个树节点的实现
2020/08/24 HTML / CSS
西班牙在线宠物食品和配件商店:bitiba
2019/10/11 全球购物
存储过程和函数的区别
2013/05/28 面试题
财务人员担保书
2014/05/13 职场文书
物业保安岗位职责
2014/07/02 职场文书
家庭贫困证明
2014/09/23 职场文书
民事诉讼代理授权委托书范本
2014/10/08 职场文书
婚礼上证婚人致辞
2015/07/28 职场文书
golang 实现并发求和
2021/05/08 Golang
MySQL 使用索引扫描进行排序
2021/06/20 MySQL