为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕桂英3389331 2018-09-04 14:10:38
Vue.js鼠标悬浮更换图片功能
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

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

 

 

这个在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组件学习教程进行学习。

 

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


查看完整回答
反对 回复 2018-09-23
  • 1 回答
  • 0 关注
  • 1928 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信