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 相关文章推荐
JQuery 获取和设置Select选项的代码
Feb 07 Javascript
JavaScript随机排序(随即出牌)
Sep 17 Javascript
基于jquery实现的上传图片及图片大小验证、图片预览效果代码
Apr 12 Javascript
Jquery颜色选择器ColorPicker实现代码
Nov 14 Javascript
解决JQeury显示内容没有边距内容紧挨着浏览器边线
Dec 20 Javascript
浅析Node.js 中 Stream API 的使用
Oct 23 Javascript
功能强大的jquery.validate表单验证插件
Nov 07 Javascript
web 屏蔽BackSpace键实例代码
Dec 24 Javascript
使用Node.js实现简易MVC框架的方法
Aug 07 Javascript
Vue中引入样式文件的方法
Aug 18 Javascript
vuejs数据超出单行显示更多,点击展开剩余数据实例
May 05 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 字符串函数收集
2010/03/29 PHP
学习php设计模式 php实现单例模式(singleton)
2015/12/07 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
windows环境下使用Composer安装ThinkPHP5
2018/05/18 PHP
thinkPHP5.1框架中Request类四种调用方式示例
2019/08/03 PHP
Js如何判断客户端是PC还是手持设备简单分析
2012/11/22 Javascript
js获取本机的外网/广域网ip地址完整源码
2013/08/12 Javascript
js数组的基本用法及数组根据下标(数值或字符)移除元素
2013/10/20 Javascript
js实现俄罗斯方块小游戏分享
2014/01/31 Javascript
js实现div闪烁原理及实现代码
2014/06/24 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
原生js中ajax访问的实例详解
2017/09/19 Javascript
基于 D3.js 绘制动态进度条的实例详解
2018/02/26 Javascript
基于vue实现滚动条滚动到指定位置对应位置数字进行tween特效
2019/04/18 Javascript
JavaScript中的连续赋值问题实例分析
2019/07/12 Javascript
javascript实现简单搜索功能
2020/03/26 Javascript
小程序中手机号识别的示例
2020/12/14 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
Python实现一个简单的MySQL类
2015/01/07 Python
Python面向对象编程中的类和对象学习教程
2015/03/30 Python
对python list 遍历删除的正确方法详解
2018/06/29 Python
python利用插值法对折线进行平滑曲线处理
2018/12/25 Python
使用 Python ssh 远程登陆服务器的最佳方案
2020/03/06 Python
Python脚本调试工具安装过程
2021/01/11 Python
SQL里面如何插入自动增长序列号字段
2012/03/29 面试题
视图的作用
2014/12/19 面试题
《庐山的云雾》教学反思
2014/04/22 职场文书
一体化教学实施方案
2014/05/10 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
2014年房产经纪人工作总结
2014/12/08 职场文书
2015年世界无烟日演讲稿
2015/03/18 职场文书
2016大学迎新晚会开场白
2015/11/24 职场文书
一文搞懂如何实现Go 超时控制
2021/03/30 Python
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL
使用 Apache Superset 可视化 ClickHouse 数据的两种方法
2021/07/07 Servers
alibaba seata服务端具体实现
2022/02/24 Java/Android