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_13_执行模型详解
Oct 20 Javascript
限制textbox或textarea输入字符长度的JS代码
Oct 16 Javascript
JS、jquery实现几分钟前、几小时前、几天前等时间差显示效果的代码实例分享
Apr 11 Javascript
实现placeholder效果的方案汇总
Jun 11 Javascript
如何用js 实现依赖注入的思想,后端框架思想搬到前端来
Aug 03 Javascript
微信小程序实战之顶部导航栏(选项卡)(1)
Jun 19 Javascript
jQuery实现下拉菜单的实例代码
Jun 19 jQuery
React 子组件向父组件传值的方法
Jul 24 Javascript
angular.extend方法的具体使用
Sep 14 Javascript
JS遍历DOM文档树的方法实例详解
Apr 03 Javascript
JS数组实现分类统计实例代码
Sep 30 Javascript
解决包含在label标签下的checkbox在ie8及以下版本点击事件无效果兼容的问题
Oct 27 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/04/13 PHP
完美实现GIF动画缩略图的php代码
2011/01/02 PHP
php的ZipArchive类用法实例
2014/10/20 PHP
PHP扩展开发教程(总结)
2015/11/04 PHP
Zend Framework入门知识点小结
2016/03/19 PHP
php调用自己java程序的方法详解
2016/05/13 PHP
PHP制作登录异常ip检测功能的实例代码
2016/11/16 PHP
麻雀虽小五脏俱全 Dojo自定义控件应用
2010/09/04 Javascript
js格式化货币数据实现代码
2013/09/04 Javascript
js变量、作用域及内存详解
2014/09/23 Javascript
推荐8款jQuery轻量级树形Tree插件
2014/11/12 Javascript
BOOTSTRAP时间控件显示在模态框下面的bug修复
2015/02/05 Javascript
jQuery实现当前页面标签高亮显示的方法
2015/03/10 Javascript
jquery实现隐藏在左侧的弹性弹出菜单效果
2015/09/18 Javascript
使用Javascript写的2048小游戏
2015/11/25 Javascript
Bootstrap实现响应式导航栏效果
2015/12/28 Javascript
JS选取DOM元素的简单方法
2016/07/08 Javascript
修改jquery中dialog的title属性方法(推荐)
2016/08/26 Javascript
JS匿名函数类生成方式实例分析
2016/11/26 Javascript
JavaScript数组操作详解
2017/02/04 Javascript
js es6系列教程 - 基于new.target属性与es5改造es6的类语法
2017/09/02 Javascript
mongoose更新对象的两种方法示例比较
2017/12/19 Javascript
原生JS实现瀑布流插件
2018/02/06 Javascript
jquery 给动态生成的标签绑定事件的几种方法总结
2018/02/24 jQuery
Vue CLI3搭建的项目中路径相关问题的解决
2018/09/17 Javascript
Python使用稀疏矩阵节省内存实例
2014/06/27 Python
python黑魔法之参数传递
2016/02/12 Python
对pandas里的loc并列条件索引的实例讲解
2018/11/15 Python
Python图像处理之图片文字识别功能(OCR)
2019/07/30 Python
在Pytorch中计算自己模型的FLOPs方式
2019/12/30 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
GafasWorld西班牙:购买太阳镜、眼镜和隐形眼镜
2019/09/08 全球购物
Can a struct inherit from another class? (结构体能继承类吗)
2014/07/22 面试题
2015教师年度考核评语
2015/03/25 职场文书
三傻大闹宝莱坞观后感
2015/06/03 职场文书
Spring实现内置监听器
2021/07/09 Java/Android