vue使用v-for实现hover点击效果


Posted in Javascript onSeptember 29, 2018

使用Vue来实现鼠标悬停效果。可以使用事件处理器v-on指令(简写为:@)来完成。为标签绑定mouseenter以及mouseleave事件即可。

hover是css中的选择器,用于选择鼠标指针浮动在上面的元素。所以a:hover可用于设置当鼠标悬停在超链接之上时超链接的样式。

在当今比较流行的前端框架里 vue react 都是以数据驱动的形式来修改元素的状态, 而并非是之前使用jq来操作dom元素, 这样效率也是非常低的, 像vue, react 都是以虚拟dom的形式渲染页面, 以数据的变化来更新虚拟dom, 从而更新页面.

vue使用v-for实现hover点击效果

jquery 来实现

1.给li来绑定hover事件

@mouseover="hover(index)"

2.在hover函数内去操作dom eq选中当前hover的li去修改它的样式, siblings()选中其他的li修改样式

hover: function(index){
  console.log(index);
  $('ul li').eq(index).css({
    'background': '#ccc',
    'color': '#fff'
  }).siblings().css({
    'background': '#fff',
    'color': '#333'
  })
}

vue 利用不同的class名来实现

首先写两个不同状态的样式

.hoverBg{
  background: #ccc;
  color: #fff;
}
.clickBg{
  background: red;
  color: #fff;
}

然后给两个状态绑定两个值

export default {
  data: function(){
    return {
      itemArr:['A','B','C','D'],
      hoverIndex: -1, //表示当前hover的是第几个li 初始为 -1 或 null 不能为0 0表示第一个li
      clickIndex: -1, //表示当前点击的是第几个li 初始为 -1 或 null 不能为0 0表示第一个li
    }
  },
}

hover的时候让hoverIndex等于hover的li,点击时候一样

@mouseover="hoverIndex = index"
@click="clickIndex = index"

鼠标移出又取消移出状态 即让hover的li为 -1 或 null

@mouseout="hoverIndex = -1"

然后利用 hoverIndex 和 clickIndex 来给li不同的class名 实现效果

:class="{'clickBg':index==clickIndex,'hoverBg':index==hoverIndex}"

用的熟练了就可以做出更多的东西,不同li渲染不同的样式

全部代码如下:

<template>
  <ul class="item">
    <li v-for="(item, index) in itemArr" :key="index"
      :class="{'clickBg':index==clickIndex,'hoverBg':index==hoverIndex}"
      @click="clickIndex = index"
      @mouseover="hoverIndex = index"
      @mouseout="hoverIndex = -1">
      {{item}}
    </li>
  </ul>
</template>

<script>
 export default {
   data: function(){
     return {
       itemArr:['A','B','C','D'],
       hoverIndex: -1, //表示当前hover的是第几个li 初始为 -1 或 null 不能为0 0表示第一个li
       clickIndex: -1, //表示当前点击的是第几个li 初始为 -1 或 null 不能为0 0表示第一个li
     }
   },
 }
</script>

<style>
 .item{
   width: 600px;
   height: 60px;
 }
 .item li{
   width: 80px;
   height: 60px;
   line-height: 60px;
   margin-left: 20px;
   float: left;
   text-align: center;
   cursor: pointer;
 }
 .hoverBg{
   background: #ccc;
   color: #fff;
 }
 .clickBg{
   background: red;
   color: #fff;
 }
</style>

总结

以上所述是小编给大家介绍的vue使用v-for实现hover点击效果,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript中onclick(this)用法介绍
Apr 19 Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
May 01 Javascript
究竟什么是Node.js?Node.js有什么好处?
May 29 Javascript
jQuery实现textarea自动增长宽高的方法
Dec 18 Javascript
如何用JavaScript实现动态修改CSS样式表
May 20 Javascript
JavaScript算法教程之sku(库存量单位)详解
Jun 29 Javascript
关于使用axios的一些心得技巧分享
Jul 02 Javascript
form表单序列化详解(推荐)
Aug 15 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
Nov 06 Javascript
jQuery子选择器与可见性选择器实例分析
Jun 28 jQuery
微信小程序HTTP请求从0到1封装
Sep 09 Javascript
vue配置多代理服务接口地址操作
Sep 08 Javascript
vue 利用路由守卫判断是否登录的方法
Sep 29 #Javascript
vue路由事件beforeRouteLeave及组件内定时器的清除方法
Sep 29 #Javascript
在vue中v-bind使用三目运算符绑定class的实例
Sep 29 #Javascript
iview同时验证多个表单问题总结
Sep 29 #Javascript
浅谈关于iview表单验证的问题
Sep 29 #Javascript
Vue路由history模式解决404问题的几种方法
Sep 29 #Javascript
对vue v-if v-else-if v-else 的简单使用详解
Sep 29 #Javascript
You might like
php程序之die调试法 快速解决错误
2009/09/17 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
Win7 64位系统下PHP连接Oracle数据库
2014/08/20 PHP
PHP中构造函数和析构函数解析
2014/10/10 PHP
php多线程实现方法及用法实例详解
2015/10/26 PHP
Laravel框架Auth用户认证操作实例分析
2019/09/29 PHP
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
js动态添加表格数据使用insertRow和insertCell实现
2014/05/22 Javascript
wap手机图片滑动切换特效无css3元素js脚本编写
2014/07/28 Javascript
javascript刷新父页面的各种方法汇总
2014/09/03 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
使用jQuery判断Div是否在可视区域的方法 判断div是否可见
2016/02/17 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
jQuery中table数据的值拷贝和拆分
2017/03/19 Javascript
Vue 实用分页paging实例代码
2017/04/12 Javascript
JS库之wow.js使用方法
2017/09/14 Javascript
Angular利用trackBy提升性能的方法
2018/01/26 Javascript
vue+element使用动态加载路由方式实现三级菜单页面显示的操作
2020/08/04 Javascript
详解Python多线程
2016/11/14 Python
100行Python代码实现自动抢火车票(附源码)
2018/01/11 Python
解决在Python编辑器pycharm中程序run正常debug错误的问题
2019/01/17 Python
Django框架基础模板标签与filter使用方法详解
2019/07/23 Python
使用celery和Django处理异步任务的流程分析
2020/02/19 Python
关于Python 中的时间处理包datetime和arrow的方法详解
2020/03/19 Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
2020/04/01 Python
python import 上级目录的导入
2020/11/03 Python
澳洲本土太阳镜品牌:Quay Australia
2019/07/29 全球购物
理工类毕业自我鉴定
2014/02/20 职场文书
2014年父亲节活动方案
2014/03/06 职场文书
青安岗事迹材料
2014/05/14 职场文书
2015年八一建军节慰问信
2015/03/23 职场文书
入党团支部推荐意见
2015/06/02 职场文书
2016优秀护士先进个人事迹材料
2016/02/25 职场文书
2016年教育局“我们的节日——端午节”主题活动总结
2016/04/01 职场文书
关于Javascript闭包与应用的详解
2021/04/22 Javascript
分享node.js实现简单登录注册的具体代码
2022/04/26 NodeJs