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 相关文章推荐
一个刚完成的layout(拖动流畅,不受iframe影响)
Aug 17 Javascript
javascript 操作cookies及正确使用cookies的属性
Oct 15 Javascript
html5的自定义data-*属性和jquery的data()方法的使用示例
Aug 21 Javascript
使用jquery animate创建平滑滚动效果(可以是到顶部、到底部或指定地方)
May 27 Javascript
angularJS提交表单(form)
Feb 09 Javascript
javascript实现的登陆遮罩效果汇总
Nov 09 Javascript
简单谈谈JavaScript的同步与异步
Dec 31 Javascript
基于JavaScript实现定时跳转到指定页面
Jan 01 Javascript
JS for循环中i++ 和 ++i的区别介绍
Jul 20 Javascript
node.js文件上传处理示例
Oct 27 Javascript
JS实现点餐自动选择框(案例分析)
Dec 10 Javascript
如何基于filter实现网站整体变灰功能
Apr 17 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
Laravel框架学习笔记(二)项目实战之模型(Models)
2014/10/15 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
smarty简单应用实例
2015/11/03 PHP
老司机传授Ubuntu下Apache+PHP+MySQL环境搭建攻略
2016/03/20 PHP
php获取用户真实IP和防刷机制的实例代码
2018/11/28 PHP
读jQuery之五(取DOM元素)
2011/06/20 Javascript
关于JavaScript中的关联数组分析
2013/04/09 Javascript
window.location.href的用法(动态输出跳转)
2014/08/09 Javascript
在Javascript中处理数组之toSource()方法的使用
2015/06/09 Javascript
js中实现字符串和数组的相互转化详解
2016/01/24 Javascript
JavaScript希尔排序、快速排序、归并排序算法
2016/05/08 Javascript
十大热门的JavaScript框架和库
2017/03/21 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
解决vue.js在编写过程中出现空格不规范报错的问题
2017/09/20 Javascript
js实现把时间戳转换为yyyy-MM-dd hh:mm 格式(es6语法)
2017/12/28 Javascript
swiper动态改变滑动内容的实现方法
2018/01/17 Javascript
vue 的点击事件获取当前点击的元素方法
2018/09/15 Javascript
微信小程序与webview交互实现支付功能
2019/06/07 Javascript
vue中echarts的用法及与elementui-select的协同绑定操作
2020/11/17 Vue.js
关于angular 8.1使用过程中的一些记录
2020/11/25 Javascript
python封装对象实现时间效果
2020/04/23 Python
python从入门到精通(DAY 2)
2015/12/20 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
Python正则表达式匹配和提取IP地址
2019/06/06 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
Python matplotlib修改默认字体的操作
2020/03/05 Python
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
房产协议书范本
2014/10/18 职场文书
2016年大学自主招生自荐信范文
2015/03/24 职场文书
2016幼儿园教师年度考核评语
2015/12/01 职场文书
2016校本研修培训心得体会
2016/01/08 职场文书
《女娲补天》教学反思
2016/02/20 职场文书
React列表栏及购物车组件使用详解
2021/06/28 Javascript
Mysql数据库表中为什么有索引却没有提高查询速度
2022/02/24 MySQL
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle